Ubuntu 中自定制 MySQL 的數(shù)據(jù)目錄時(shí),要考慮 apparmor 的配置

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.

成功~

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容