Rocky Linux 에 MariaDB 설치하기

mysql -u root -p
#root 비밀번호 입력

-- 사용자 생성
CREATE USER 'iamwhatiam'@'%' IDENTIFIED BY 'abc1234';

-- 관리자 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'iamwhatiam'@'%' WITH GRANT OPTION;

-- 권한 테이블 다시 로드
FLUSH PRIVILEGES;

   Synology NAS VMM에 Rocky Linux 8을 설치하고 Oracle19c, PostgreSQL 을 설치해 봤다.   (현재 시점 Oracle19c 설치 과정은 아직 포스팅 하지 않았다.)   MS-SQL은 Windows가 없어서 설치 못하더라도 범용적으로 사용되는 MariaDB까지는 설치해 놓고 사용해 보려고 한다.

   내가 MySQL을 사용하지 않고 MariaDB를 사용하는 이유는 간단하다.   일단 간은 Source 기반인데 MySQL이 Oracle로 넘어가면서 상업적인 정책으로 변하는 것들을 보면서 내가 사용하는 수준의 MySQL은 MariaDB로 대체 된들 전혀 문제되지 않기 때문에 MariaDB를 사용하기 시작했다.   DBA입장이 아니라 개발자 입장이라면 MariaDB 와 MySQL의 차이를 개발을 하면서 느낄 수 없을 것이기 때문이다.

   일단 지금 설치하려고 하는 Linux의 정보를 확인해 보자.

uname -a

cat /etc/redhat-release

   'uname -a' 명령어는 시스템 커널의 버전을 확인하는 방법이고 'cat /etc/redhat-release' 는 배포판 버전을 확인하는 방법이다.   나의 경우엔 Rocky Linux를 사용하기 때문에 'cat /etc/redhat-release' 로 확인할 수 있지만 Debian 계열의 Ubuntu 같은 경우는 'lsb_release -a' 로 확인할 수 있다.

[ 현재 시스템의 정보 확인 ]

 

1. Rocky Linux System Update

sudo su -

dnf upgrade -y --refresh

 

2. MariaDB 저장소 가져오기
   dnf를 통해서 그냥 설치하게 되면 MariaDB 10.3.39 버전이 설치 되게 된다.

dnf list mariadb
dnf info mariadb-server

 

[ dnf를 통해서 현재 설치 할 수 있는 MariaDB Version ]


    글을 쓰고 있는 현재 시점(2024년 7월) 기준으로 MariaDB의 최신 버전은 11.4.2 이다. (11.6 도 나왔지만 Preview 상태이니 정식 버전인 11.4.2를 최신이라고 하겠다.)

[ https://mariadb.org/ ]

   Package 관리 차원에서 Package Manager를 사용하는게 관리상 편할테니 MariaDB 저장소를 추가해서 dnf를 통해 설치 할 수 있는 최신 버전을 설치하도록 한다.   그러기 위해서는  MariaDB 저장소를 추가해야 한다.  먼저 yum을 통해서 설치 할 수 있는 MariaDB의 Version을 확인해 보자.  http://mirror.mariadb.org/yum/

[ 현재 기준 11.4.2 이 가장 최신 안정화 버전이다 ]

   dnf 저장소에 최신버전의 MariaDB를 설치할 수 있게 하기 위해서 수동으로 추가해 준다.

vi /etc/yum.repos.d/MariaDB.repo

[MariaDB-11.4]
name=MariaDB 11.4 repo (build 46870)
baseurl=http://mirror.mariadb.org/yum/11.4.2/rockylinux8-amd64/
gpgcheck=0
module_hotfixes=1

 

   dnf Package Manager에서 사용할 수 있는 Repository를 확인한다.

dnf repolist

[ Repository List에 MariaDB가 추가된 것을 볼 수 있다 ]

  dnf Package Manager를 통해서 MariaDB 11.4.2 를 설치한다.

dnf -y install MariaDB

[ dnf를 통해 MariaDB 설치 ]

 

 

3. MariaDB Service 설정
   MariaDB 설치가 완료 되었으니 이제 서비스에 등록하여 시스템 구동시 자동적으로 구동되게 하자.

systemctl status mariadb

systemctl start mariadb

systemctl status mariadb

systemctl enable mariadb

[ Service에 등록하여 MariaDB가 시스템 구동시 자동으로 구동되게 한다 ]

 

 

4. MariaDB 보안 설정
   - 루트 암호 설정
   - 익명 사용자 제거
   - 원격 접속 허용
   - 테스트 데이터베이스 제거
   MariaDB를 처음 설치한 후 기본적인 보안 설정을 완료하기 위해서 기본 보안 설정을 진행한다.

mariadb-secure-installation

[ 기본 보안 설정을 진행한다 ]

   - 현재 root 사용자의 암호를 입력하세요 (암호가 없는 경우 Enter):
   - unix_socket 인증으로 전환하시겠습니까? [Y/n] n
   - root 암호를 변경하시겠습니까? [Y/n] y
   - 익명 사용자를 제거하시겠습니까? [Y/n] y
   - 원격에서 root 로그인을 허용하지 않으시겠습니까? [Y/n] y
   - 권한 테이블을 지금 다시로드하시겠습니까? [Y/n] y

 

5. MariaDB에 접속하기
   설치 및 설정이 모두 완료되었으니 정상적으로 접속 되는지 확인해본다.

[ mysql 로 접속해서 확인 ]

   root로는 외부 접속이 차단되었으니 새로운 사용자 계정을 생성한다. (비밀번호는 abc1234 로 했다.)

-- MariaDB에 root로 접속
mysql -u root -p

-- 사용자 생성
CREATE USER 'iamwhatiam'@'%' IDENTIFIED BY 'abc1234';

-- 관리자 권한 부여
GRANT ALL PRIVILEGES ON *.* TO 'iamwhatiam'@'%' WITH GRANT OPTION;

-- 권한 테이블 다시 로드
FLUSH PRIVILEGES;

[ 신규 사용자 계정 생성 ]

   MariaDB가 외부접속이 가능하도록 설정한다.   dnf를 통해서 설치한 MariaDB의 경우 'server.cnf' 파일이 '/etc/my.cnf.d' 경로에 있다.   환경마다 다소 다를 수 있지만 지금은 dnf 를 통해서 설치 했기 때문에 '/etc/my.cnf.d' 경로에서 'server.cnf'를 찾으면 된다.
   server.cnf 파일을 vi 로 열어서 bind-address=0.0.0.0 으로 되어 있는 설정의 주석을 없애고 저장한다.

[ server.cnf 에서 bind-address 주석값을 없애고 저장 ]

   Linux 자체의 방화벽에 3306 포트를 오픈 후 MariaDB를 재기동 한다.

sudo su -

firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload

systemctl restart mariadb

[ 외부 접속을 위한 설정 변경 ]

 

[ DBeaver 로 접속 확인 ]
[ 신규 생성한 계정으로 외부에서 접속되는 것을 확인 할 수 있다 ]