執行/etc/init.d/mysql start啟動後,報錯內容如下:
| 代碼如下 |
複製代碼 |
Can't find file: "./mysql/plugin.frm'(errno:13) [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it.
|
執行mysql_upgrade時,同樣報錯。將配置還原,重啟正常。因為只改動了/etc/mysql/my.cnf的這一項值,確定修改內容正確。在細看了所有的配置後,看到注釋的chroot項,想到了會不會是chroot在做怪。經網上尋找發現是由apparmor造成的。
解決方案如下:
修改/etc/apparmor.d下的相關檔案,需要修改:usr.sbin.mysqld和abstractions/mysql 兩個檔案,usr.sbin.mysqld 檔案中相關兩行內容做如下修改:
| 代碼如下 |
複製代碼 |
/var/lib/mysql/ r,改為 /data/mysqldata r, /var/lib/mysql/** rwk,改為 /data/mysqldata/** rwk, abstractions/mysql 檔案修改一行: /var/lib/mysql/mysql.sock rw,改為: /data/mysqldata/mysql.sock rw, 修改完成後,重新載入apparmor服務: /etc/init.d/apparmor reload |
修改完後,再啟動mysql 服務,發現正常。
註:不只是mysql,如果需要修改其他一些系統內建軟體的儲存目錄,改了配置之後,仍然報錯的話,則可能需要修改相應apparmor選項才行!請參照上面的方法!
最後科普下apparmor,在2.6.36及其以後的核心中已經整合。是linux 核心級的強制存取控制系統,類似於SELinux 。更多內容可以查看百度百科上的介紹,回頭也單獨做一篇相關的總結。