mysqld 給出 errcode:13 因為它無法建立測試文件

mysqld 給出 errcode:13 因為它無法建立測試文件

11.04 的新安裝。然後我按照這裡的所有說明進行操作: http://www.howtoforge.com/installing-apache2-with-php5-and-mysql-support-on-ubuntu-11.04-lamp

現在,當我運行 mysqld 時,出現以下錯誤:

makara@rahu:~$ mysqld
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
111103 13:39:37 [Warning] Can't create test file /var/lib/mysql/rahu.lower-test
mysqld: Can't change dir to '/var/lib/mysql/' (Errcode: 13)
111103 13:39:37 [ERROR] Aborting
111103 13:39:37 [Note] mysqld: Shutdown complete

IRC 上有人說這可能是軟體包問題?

謝謝甜菜

答案1

從 Oneiric 升級到 Precise(將 MySQL 從 5.1 升級到 5.5)後,我遇到了同樣的問題。

就我而言,問題是

/etc/apparmor.d/local/usr.sbin.mysqld

丟失了,儘管它包含在

/etc/apparmor.d/usr.sbin.mysqld

預設情況下。一個簡單的

sudo touch /etc/apparmor.d/local/usr.sbin.mysqld

為我解決了這個問題。

對於那些搜尋者:保存有趣資訊的日誌檔案是/var/log/upstart/mysql。 /var/log/mysql(*|/*) 中不會有任何內容

您看到的可能包括:

  • sudo service mysql start結果是

    開始:作業啟動失敗

  • 手動嘗試mysqld以普通用戶身份啟動將像往常一樣失敗(在上述問題出現之前),因為該用戶無權訪問 /var/lib/mysql(這可以在系統日誌中找到)。

  • 以 root 身分啟動 mysqld 會成功(我不知道為什麼)

答案2

mysqld 應該以 mysql 使用者身分執行。您不應該手動執行守護程序。最好將其作為服務啟動,如下所示:

sudo service mysql start

該錯誤訊息指出 mysql 服務無法存取某些在您的使用者環境中不應被允許存取的檔案。所以這種行為應該是正確的。但是,您應該檢查目錄是否存在以及誰擁有它們以及誰有權訪問它們(為此目的使用 ls -la ):

ls -la  /var/lib/
ls -la  /var/lib/mysql

相關內容