CentOS 에서 MariaDB 사용하기

1. MariaDB 데몬 구동하기

CentOS 7 에는 MySQL 상위 호환 버전인 MariaDB 가 기본적으로 설치되어 있다. 먼저, MariaDB 데몬의 상태를 아래와 같이 확인한다. systemctl status mariadb 명령을 이용한다.

[root@sirna1 ~]# systemctl status mariadb
* mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: inactive (dead) since Fri 2018-12-28 19:26:15 KST; 16s ago
  Process: 1538 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 1537 ExecStart=/usr/bin/mysqld_safe --basedir=/usr (code=exited, status=0/SUCCESS)
  Process: 1289 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 1537 (code=exited, status=0/SUCCESS)

Dec 28 19:26:10 sirna1 systemd[1]: Stopping MariaDB database server...
Dec 28 19:26:15 sirna1 systemd[1]: Stopped MariaDB database server.
Warning: Journal has been rotated since unit was started. Log output is incomplete or unavailable.

Active 항목에 ‘inactive (dead)’ 라고 되어있는 것으로 보아 현재 작동중이지 않음을 나타낸다. 다음과 같이 MariaDB 데몬을 시작시켜준다. systemctl start mariadb 명령을 이용한다.

[root@sirna1 ~]# systemctl start mariadb

문제없이 잘 시작이 되었다면 이제 데몬의 상태를 다시 한번 확인해 보자.

[root@sirna1 ~]# systemctl status mariadb
* mariadb.service - MariaDB database server
   Loaded: loaded (/usr/lib/systemd/system/mariadb.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2018-12-28 19:27:17 KST; 55s ago
  Process: 3876 ExecStartPost=/usr/libexec/mariadb-wait-ready $MAINPID (code=exited, status=0/SUCCESS)
  Process: 3841 ExecStartPre=/usr/libexec/mariadb-prepare-db-dir %n (code=exited, status=0/SUCCESS)
 Main PID: 3875 (mysqld_safe)
    Tasks: 30
   CGroup: /system.slice/mariadb.service
           |-3875 /bin/sh /usr/bin/mysqld_safe --basedir=/usr
           `-4044 /usr/libexec/mysqld --basedir=/usr --datadir=/var/lib/mysql --plugin-dir=/usr/lib64/mysql/plugin
                                      --log-error=/var/log/mariadb/mariadb.log --pid-file=/var/run/mariadb/mariadb.pid
                                      --socket=/var/lib/mysql/mysql.sock

Active 항목이 ‘active (running)’ 으로 바뀐 것을 확인할 수 있다. 제대로 잘 동작하고 있음을 나타낸다.

2. 접속 및 종료

자, 이제 MariaDB 데몬이 문제 없이 구동되고 있으므로 데이터베이스 관리 화면에 접속하고 종료하는 방법을 알아보자.

1. MySQL 접속

mysql 명령어로 다음과 같은 프롬프트로 들어간다. 사용자 지정도 되어있지 않은 상태이며,

[lab@sirna1 ~]$ mysql
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 143
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]>

2. 현재 데이터베이스 목록 보기

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test               |
+--------------------+
2 rows in set (0.02 sec)

3. 사용할 데이터베이스 선택

방법 1. MySQL 프롬프트 상에서 선택하기

contents

방법 2. mysql 실행시에 사용할 데이터베이스 이름을 적어주기

[lab@sirna1 ~]$ mysql -u root mysql

4. 종료하기

MariaDB [mysql]> exit;
Bye
[root@sirna1 ~]#

테이블 리스트 보기

MariaDB [mysql]> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
...
| user                      |
+---------------------------+
24 rows in set (0.00 sec)

계정 관리

패드워드 변경시에는 아래와 같이 변경해 준다. 어떤 사용자의 비밀번호를 바꿀지는 -u {사용자명} 옵션에 의하여 결정되고, 사용하던 이전 비밀번호가 있는 경우에는 이전 비밀번호를 입력해야 하므로 -p 옵션을 준다. 그리고 비밀번호를 바꾸는 작업을 수행할 것이므로 password 라는 mysqladmin 의 하위 명령어를 입력해 준다.

$ mysqladmin -u root -p password
Enter password: (old password)
New password: (new password)
Confirm new password: (new password)

현재 MySQL 에 등록된 사용자들을 보려면 mysql 에 접속하여 확인하면 된다. mysql 데이터베이스의 user 테이블에 사용자들의 정보를 담고있는 테이블을 조회해보면 된다.

$ mysql -u root -p
Enter password:

MariaDB [(none)]> select Host,User from mysql.user;
+-----------+--------+
| Host      | User   |
+-----------+--------+
| 127.0.0.1 | root   |
| ::1       | root   |
| localhost |        |
| localhost | root   |
| sirna1    |        |
| sirna1    | root   |
+-----------+--------+
6 rows in set (0.00 sec)

MySQL 데이터 디렉토리 구조

데이터베이스가 저장되는 파일의 위치는 어디일까?

MySQL 설정 파일인 /etc/my.cnf 를 들여다 보면 있다. 앞 부분의 datadir 에서 데이터의 경로를 지정하고 있다.

[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd

[mysqld_safe]
log-error=/var/log/mariadb/mariadb.log
pid-file=/var/run/mariadb/mariadb.pid

#
# include all files from the config directory
#
!includedir /etc/my.cnf.d

db 를 생성하게 되면 다음과 같이 폴더가 생기고 그 아래에 데이터가 저장된다.

/var/lib/mysql/flasknote