Ubuntu AppArmor and MySQL
參考:https://blogs.oracle.com/jsmyth/entry/apparmor_and_mysql
系統(tǒng)版本:Ubuntu 16.04 LTS, MySQL 5.7.17
在 Ubuntu 中自定制 MySQL 的數(shù)據(jù)目錄時(shí),不得不考慮 apparmor 的配置。
MySQL 可以對那些目錄有讀寫權(quán)限,除了目錄本身的權(quán)限配置,apparmor 也增加了一層訪問控制的功能。
我遇到的問題是,修改二進(jìn)制日志的數(shù)據(jù)目目錄為
mkdir -p /mydata/mysql-binlogs
chmod -R mysql:mysql /mydata/mysql-binlogs
配置 my.cnf
bin-log=/mydata/mysql-binlogs/binlog
server-id=1
執(zhí)行 service mysql start 遇到報(bào)錯(cuò):
Mar 17 10:23:55 guli-Ubuntu1 mysqld[3044]: Initialization of mysqld failed: 0
Mar 17 10:23:55 guli-Ubuntu1 systemd[1]: mysql.service: Control process exited, code=exited status=1
Mar 17 10:23:55 guli-Ubuntu1 kernel: [ 2452.426890] audit: type=1400 audit(1489717435.721:34): apparmor="DENIED" operation="mknod" profile="/usr/sbin/mysqld" name="/mydata/mysql-binlogs/binlog.index" pid=3047 comm="mysqld" requested_mask="c" denied_mask="c" fsuid=122 ouid=122
這里是一種解決方法:(更多方法請參考原文鏈接)
配置 apparmor:
cat /etc/apparmor.d/local/usr.sbin.mysqld
# Site-specific additions and overrides for usr.sbin.mysqld.
# For more details, please see /etc/apparmor.d/local/README.
/mydata/mysql-binlogs/ r,
/mydata/mysql-binlogs/** rwk,
重新加載配置:
service apparmor reload
啟動(dòng) mysql
# /etc/init.d/mysql start
[ ok ] Starting mysql (via systemctl): mysql.service.
成功~