ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • CentOS 7.9에 MariaDB 10.4 설치하기
    개발 2021. 2. 11. 22:14

    개요

    CentOS 7.9에 yum을 이용하여 mariadb를 설치하면 기본적으로 5.5 버전이 설치된다.

    크게 문제가 없을 줄 알았는데, 기존 db에서 dump 받아 이를 복원하는데 문제가 발생했다.

    5.5 버전에서는 한 테이블에 datetime형식의 컬럼이 두 개 이상 만들어지지 않는 것이다.

    다행히 이것은 5.7 이후부터는 여러 개 등록이 가능하다고 한다.

     

    최신 버전으로 설치하기로 했다. 10.4 버전이다.

    이것도 크게 문제가 없을 줄 알았는데, 이전 버전(10.3)과는 관리자 인증방식이 변경되었다.

    나는 처음 mysql을 설치하면 필요 없는 계정은 보안을 위해 삭제하는 편이다.

    그래서 user 테이블에 아이디가 없는 것과 비밀번호가 없는 것은 모두 삭제하였다.

    그랬더니 무언가 이상하다. 정상 동작하지 않는다.

    'mariadb.sys' 계정이 없다는 것이다.

    처음 user 테이블을 보았을 때 'mariadb.sys'란 처음 보는 계정이 있었다. 비밀번호가 설정되어 있지 않았기에 그냥 지웠더니 저 계정이 문제가 되었다. 검색을 해보니 10.4 버전부터는 인증방식이 변경되었다는 것이다. 그것이 지금 이 글을 적는 이유이다.

     

    우선 10.4 버전을 설치하자.

    MariaDB 10.4 설치

    Yum 저장소 갱신

    yum에서 최신 버전의 mariadb를 받을 수 있도록 저장소를 추가하자.

     

    # /etc/yum.repos.d/에 'mariadb.repo' 파일을 신규로 만들자.

    파일 안에는 다음과 같이 입력한다.

    [mariadb]
    name = MariaDB
    baseurl = http://yum.mariadb.org/10.4/centos7-amd64
    gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
    gpgcheck=1

    설치

    # yum install mariadb-server

    인증방식

    10.4부터는 Unix socketmysql_native_password의 두 가지 인증방식을 사용한다.

    사용자는 기본적으로 mariadb.sys, mysql, root가 자동으로 생성된다.

    10.4는 이전 버전처럼 꼭 root의 비밀번호를 설정하라고 권장하지 않는다.

    그래도 혹시 모르니 root의 비밀번호는 설정해두자.(그런데 비밀번호를 아래와 같이 설정하여도 비밀번호 적용은 안 되는 것 같다. 변경된 비밀번호에 상관없이 비밀번호를 입력하지 않아도 root는 그냥 로그인이 된다.)

    MariaDB [(none)]> set password = password("새로운 비밀번호 입력");

    Unix socket

    운영체제의 사용자 계정과 mariadb의 사용자 계정을 일치시키는 인증방식이다.

    운영체제의 root 계정은 mariadb의 root 계정을 관리할 수 있도록 되어 있기 때문에 운영체제의 root 사용자는 별도의 비밀번호 입력 없이 db에 접속할 수 있다. 이전 버전에서는 운영체제의 root 사용자가 아니더라도 mysql에 비밀번호 설정이 없었기 때문에 누구나 접속할 수 있었다. 그래서 root 계정에 비밀번호를 꼭 추가하라고 했는데, 이제는 그럴 필요가 없어진 것 같다.

    # mysql

    하지만 아래처럼 root계정의 비밀번호를 임의로 바꾸게 되면 위처럼 비밀번호 없이 로그인 되는 것은 사라진다.

    MariaDB [(none)]> grant all privileges on *.* to 'root'@'%' identified by 'MyNewPassword';

    Mysql_native_password

    기존의 아이디와 비밀번호를 입력하는 방식과 동일하다.

    $ mysql -uroot -p

    불필요한 계정 삭제하기

    MariaDB [mysql]> delete from user where user='';
    MariaDB [mysql]> flush privileges;

    MariaDB 재기동

    # systemctl (start | stop | restart) mariadb

    포트 변경

    # vi /etc/my.cnf.d/server.cnf

    포트번호가 생략되어 있다. 하단의 [mariadb-10.4] 영역에 포트를 설정하여준다.

    포트설정

    이제 서버를 재기동하고 포트를 개방하여 주자.

    # systemctl restart mariadb
    # firewall-cmd --permanent --zone=public --add-port=3308/tcp
    # firewall-cmd --reload
    반응형

    댓글

Designed by Tistory.