0. 환경
- CentOS Linux release 7.9.2009
- MariaDB - 10.4.24
1. 설정
1. datadir 확인
# mysql -u root -p
MariaDB [(none)]> show variables where Variable_name = 'datadir';
+---------------+-----------------+
| Variable_name | Value |
+---------------+-----------------+
| datadir | /var/lib/mysql/ |
+---------------+-----------------+
2. DB 정지
# systemctl stop mariadb
3. 새 디렉터리 생성
# mkdir /mysql_data
4. 기존 data 경로 복사
// 파일 복사
# rsync -av /var/lib/mysql /mysql_data
// 소유자 변경
# chown -R mysql.mysql /mysql_data
5. DB 설정 파일 변경
★ [mysqld], [client]를 꼭 작성합니다.
# vi /etc/my.cnf
[mysqld]
datadir=/mysql_data/mysql/
socket=/mysql_data/mysql/mysql.sock
[client]
socket=/mysql_data/mysql/mysql.sock
6. SELinux 설정
- SELinux 설정하지 않고 실행한 경우 실행이 되지 않고 다음과 같은 설정을 제안합니다.(SELinux 설정)
- 또는 SELinux를 끄는 방법도 있습니다.
***** Plugin catchall_labels (83.8 confidence) suggests *******************
If you want to allow mysqld_safe_helper to have write access on the mysql_data directory
Then you need to change the label on mysql_data
Do
# semanage fcontext -a -t FILE_TYPE 'mysql_data'
where FILE_TYPE is one of the following: cluster_var_run_t, faillog_t, krb5_host_rcache_t, mysqld_db_t, mysqld_log_t, mysqld_tmp_t, mysqld_
Then execute:
restorecon -v 'mysql_data'
***** Plugin catchall (17.1 confidence) suggests **************************
If you believe that mysqld_safe_helper should be allowed write access on the mysql_data directory by default.
Then you should report this as a bug.
You can generate a local policy module to allow this access.
Do
allow this access for now by executing:
# ausearch -c 'mysqld_safe_hel' --raw | audit2allow -M my-mysqldsafehel
# semodule -i my-mysqldsafehel.pp
1안) SELinux 끄기
# vi /etc/sysconfig/selinux
SELINUX=disabled
# reboot
2안) SELinux 설정(권장)
# semanage fcontext -a -t mysqld_db_t "/mysql_data/mysql(/.*)?"
# restorecon -R /mysql_data/mysql
2. 확인
- DB 실행을 해보고 각 변수를 확인해봅니다.
- 설정이 알맞게 변경된 경우 기존 datadir는 삭제해도 됩니다.
# systemctl start mariadb
# mysql -u root -p
MariaDB [(none)]> show variables like 'datadir';
+---------------+--------------------+
| Variable_name | Value |
+---------------+--------------------+
| datadir | /mysql_data/mysql/ |
+---------------+--------------------+
MariaDB [(none)]> show variables like 'socket';
+---------------+------------------------------+
| Variable_name | Value |
+---------------+------------------------------+
| socket | /mysql_data/mysql/mysql.sock |
+---------------+------------------------------+