简单记录下,最近安装一个mysql,但是修改了对应的数据文件的目录,也就是在/etc/mysql
修改了对应配置文件
[mysqld]
datadir=/data/mysql/data
socket=/var/lib/mysql/mysql.sock
group_concat_max_len=1024000
log-error=/data/mysql/log/mysql-error.log
character-set-server=utf8mb4
default-storage-engine=INNODB
修改了datadir 导致mysql无法启动,因为mysql是采用mysql用户启动,非root用户,所以去把/data/mysql/data
的权限赋给mysql用户,大致就是
sudo chown -R mysql:mysql /data/mysql/data
权限都给了之后sudo systemctl restart mysql
还是不对,利用journalctl -xe
查看具体的错误信息,出现类似的错误,开始还有别的目录显示这样,带着AVC apparmor="DENIED" operation="mknod"
应该都是类似的问题。
May 26 03:06:53 ent-ai-1 audit[82815]: AVC apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/var/lib/mysql/mysql.sock.lock" pid=82815 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=114 ouid=114
解决方案
修改 /etc/apparmor.d/usr.sbin.mysqld
文件,修改对应的
# Allow data dir access
/data/mysql/data/ r,
/data/mysql/data/** rwk,
/var/lib/mysql/** rwk,
这里是数据对应的,如果出现log等其他目录的显示这样的权限问题,同理进行修改,之前还不直到权限在这里还被设置了一下
修改保存之后重启 apparmor
命令就这样
sudo systemctl restart apparmor
最后再重新启动mysql生效
sudo systemctl restart mysql