我重新定位了 mysql 文件夹。我使用了此链接。
我无法启动 mysql 服务,并且出现此错误消息
Unit mysql.service has begun starting up.
Aug 26 02:53:19 ubuntu audit[1345]: AVC **apparmor="DENIED**" operation="open" profi le="/usr/sbin/mysqld" name="/proc/1345/status" pid=1345 comm="mysqld" requested_ mask="r" denied_mask="r" fsuid=109 ouid=109
Aug 26 02:53:19 ubuntu kernel: audit: type=1400 audit(1503741199.505:43): apparm or="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/1345/status" pid=1345 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=109
Aug 26 02:53:19 ubuntu audit[1345]: AVC apparmor="DENIED" operation="open" profi le="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=1345 comm="mysqld" re quested_mask="r" denied_mask="r" fsuid=109 ouid=0
Aug 26 02:53:19 ubuntu audit[1345]: AVC apparmor="DENIED" operation="open" profi le="/usr/sbin/mysqld" name="/proc/1345/status" pid=1345 comm="mysqld" requested_ mask="r" denied_mask="r" fsuid=109 ouid=109
Aug 26 02:53:19 ubuntu kernel: audit: type=1400 audit(1503741199.513:44): apparm or="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/syste m/node/" pid=1345 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 oui d=0
Aug 26 02:53:19 ubuntu kernel: audit: type=1400 audit(1503741199.513:45): apparm or="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/1345/status" pid=1345 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=109 ouid=109
Aug 26 02:53:19 ubuntu audit[1345]: AVC apparmor="DENIED" operation="mknod" prof ile="/usr/sbin/mysqld" name="/ssd/ubuntu.lower-test" pid=1345 comm="mysqld" requ ested_mask="c" denied_mask="c" fsuid=109 ouid=109
Aug 26 02:53:19 ubuntu audit[1345]: AVC apparmor="DENIED" operation="mknod" prof ile="/usr/sbin/mysqld" name="/ssd/ubuntu.lower-test" pid=1345 comm="mysqld" requ ested_mask="c" denied_mask="c" fsuid=109 ouid=109
Aug 26 02:53:19 ubuntu kernel: audit: type=1400 audit(1503741199.661:46): apparm or="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/ssd/ubuntu.lower -test" pid=1345 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=109 ouid= 109
Aug 26 02:53:19 ubuntu kernel: audit: type=1400 audit(1503741199.661:47): apparm or="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/ssd/ubuntu.lower -test" pid=1345 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=109 ouid= 109
Aug 26 02:53:19 ubuntu kernel: audit: type=1400 audit(1503741199.665:48): apparm or="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/ssd/ubuntu.lower -test" pid=1345 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=109 ouid= 109
Aug 26 02:53:19 ubuntu audit[1345]: AVC apparmor="DENIED" operation="mknod" prof ile="/usr/sbin/mysqld" name="/ssd/ubuntu.lower-test" pid=1345 comm="mysqld" requ ested_mask="c" denied_mask="c" fsuid=109 ouid=109
Aug 26 02:53:19 ubuntu audit[1345]: AVC apparmor="DENIED" operation="mknod" prof ile="/usr/sbin/mysqld" name="/ssd/ibdata1" pid=1345 comm="mysqld" requested_mask ="c" denied_mask="c" fsuid=109 ouid=109
Aug 26 02:53:19 ubuntu kernel: audit: type=1400 audit(1503741199.685:49): apparm or="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/ssd/ibdata1" pid =1345 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=109 ouid=109
Aug 26 02:53:20 ubuntu systemd[1]: mysql.service: Main process exited, code=exit ed, status=1/FAILURE
我该如何解决?
答案1
我按照以下步骤更改 mysql 中的默认数据目录:
我的系统配置如下
mysql 版本 14.14 发行版 5.7.19
Ubuntu 16.04 LTS
步骤如下:
- 停止 mysql 服务器
service mysql stop
编辑文件
/etc/mysql/mysql.conf.d/mysqld.cnf
并编辑datadir
字段以指向新位置。例如
datadir = /data/mysql
然后将内容复制
/var/lib/mysql
到新位置:cp -pr /var/lib/mysql /data
然后编辑
/etc/apparmor.d/usr.sbin.mysqld
文件。删除/var/lib/mysql
并添加新datadir
位置。在我的例子中是# Allow data dir access /data/mysql/ r, /data/mysql/** rwk,
重新启动 apparmor 服务
systemctl restart apparmor
重启mysql服务
service mysql start
上述步骤对我有用,我希望对您也有效。
答案2
始终检查 Apparmor 状态
sudo service apparmor status
- 如果它没有活动,请使用
journalctl -xe
,并验证哪个配置文件有问题。
答案3
这对我有用:Apt 升级后 Mysql 崩溃
$ sudo vi /etc/apparmor.d/usr.sbin.mysqld
...
/etc/mysql/mysql.conf.d/ r,
/etc/mysql/mysql.conf.d/* r,
/sys/devices/system/node/* r,
/etc/mysql/*.cnf r,
/run/mysqld/* rw,
...
$ sudo systemctl reload apparmor.service
$ sudo systemctl start mysql.service