linux上改变mysql数据文件的位置

时间:2023-01-07 06:23:31

用软连接改变了/var/lib/mysql的位置,并设置好mysql.mysql的权限,但是发现还是不能启动。

发现/var/log/mysqld.log

150308 16:16:02 [Warning] Can't create test file /var/lib/mysql/Gadget.lower-test

150308 16:16:02 [Warning] Can't create test file /var/lib/mysql/Gadget.lower-test
/usr/libexec/mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)

想了想应该还是某种权限问题,经过查帖子发现

chcon  -t var_lib_t /home
chcon -R -t mysqld_db_t /home/mysql

原因是

看最初的时候/var/lib/mysql目录的属性:
[root@centos6 mysql]# ls -alZ
drwxr-xr-x. mysql mysql system_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 .
drwxr-xr-x. root  root  system_ulinux上改变mysql数据文件的位置bject_r:var_lib_t:s0   ..
-rw-rw----. mysql mysql unconfined_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 centos6-relay-bin.000001
-rw-rw----. mysql mysql unconfined_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 centos6-relay-bin.000002
-rw-rw----. mysql mysql unconfined_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 centos6-relay-bin.index
-rw-rw----. mysql mysql unconfined_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 ibdata1
-rw-rw----. mysql mysql unconfined_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 ib_logfile0
-rw-rw----. mysql mysql unconfined_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 ib_logfile1
-rw-rw----. mysql mysql unconfined_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 master.info
drwx------. mysql mysql unconfined_ulinux上改变mysql数据文件的位置bject_r:mysqld_db_t:s0 mysql
-rw-rw----. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 mysqld-relay-bin.000001
-rw-rw----. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 mysqld-relay-bin.index
srwxrwxrwx. mysql mysql unconfined_u:object_r:mysqld_var_run_t:s0 mysql.sock
-rw-rw----. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 relay-log.info
drwx------. mysql mysql unconfined_u:object_r:mysqld_db_t:s0 test

发现/var/lib的selinux属性是var_lib_t
/var/lib/mysql以下所有文件的selinux属性是mysqld_db_t

所以这两步必须执行。