SELinux

MySQL配置文件中修改了datadir后无法启动, log大致为

    Can't create test file /datadir/boxy.lower-test

很确定没有权限问题, 最后发现是selinux的问题, 自然不能关掉它。

datadir为修改后的数据目录,新建一条规则,指定/datadir目录及其下的所有文件的扩展属性为mysqld_db_t, 此外还有mysqld_log_t、mysqld_etc_t、mysqld_port_t这样

    #semanage fcontext -a -t mysqld_db_t "/datadir(/.*)?"
    #restorecon -Rv /datadir

这里可能需要重启, 貌似还有个即时生效的命令chcon, 未深究.

Client Sock

如果同时修改了sock的目录, 想要本机客户端命令正常工作, 需要在客户端配置文件标签(标签已列出)中同时加上

[client]
socket=/xxxxx
[client-mariadb]
socket=/xxxxx
[mysql]
socket=/xxxxx
[mysql_upgrade]
socket=/xxxxx
[mysqladmin]
socket=/xxxxx
[mysqlbinlog]
socket=/xxxxx
[mysqlcheck]
socket=/xxxxx
[mysqldump]
socket=/xxxxx
[mysqlimport]
socket=/xxxxx
[mysqlshow]
socket=/xxxxx
[mysqlslap]
socket=/xxxxx

如果还有一些命令工作不正常(如mysql_secure_installation), 可在命令后加-S /xx/xxxxx.sock

结束

参考

  1. selinux-and-mysql