![](/img/trans.png)
[英]Can't open and lock privilege tables: Table 'mysql.user' doesn't exist
[英]service mysql start leaves “privilege tables: Table 'mysql.user' doesn't exist” in my log file and the server fails
我已經閱讀了許多其他類似問題的文章,但似乎與我所遇到的問題都不相同,因此希望有人可以提供幫助。
我看到的所有其他帖子都在某種程度上說是要重新安裝,或者至少銷毀並重建構建所有用戶和其他引用的主要mysql數據庫。 我不想這樣做,因為我當前的數據庫中有太多數據,而且仍然可以正常工作。
我在使用apparmor阻止來自mysql的文件構建時遇到了很多麻煩,所以我很生氣並刪除了apparmor。 這就是一切開始的時候。
以正常方式啟動MySQL會給我日志文件中主題行的錯誤,並且服務器永不停止。 這是我通常使用的命令
service mysql start
另一方面,如果我以這種方式啟動mysql,則可以正常工作!!!
mysqld --user=mysql --basedir=/var/lib/mysql --datadir=/var/lib/mysql/data
因此,現在我知道MySQL本身或數據庫都沒有問題。 一定有問題導致正常的啟動過程不知道數據庫應該在哪里。
問題是,配置文件沒有任何更改。 他們讀得很好,因為一旦我確實使數據庫運行,一切就可以正常工作,並且我所有的應用程序都可以聯機並正常運行。
配置文件具有正確的數據路徑。
/etc/mysql/mysql.conf.d/mysqld.cnf: datadir = /var/lib/mysql/data
誰能想到這里會發生什么? 我敢肯定,刪除apparmor是根本原因,但重新安裝它並沒有幫助。 現在已將其禁用,並且服務正在運行,但僅當我以其他方式啟動它(我不想這樣做)時才可以。 我想回到正常/正確的方式開始做事。 替代方案只是讓我暫時起步並運行的權宜之計。
謝謝!
我仍然不知道為什么會這樣。 我堅信這與撤除apparmor有關,但我無法證明這一點。 我也不知道為什么會發生,但現在一切正常。
在事情開始工作到停止工作之間,我執行的系統的唯一更改是移除了apparmor。
不知何故,我的/etc/mysql/mysql.conf.d文件夾中的配置文件停止被讀取。它們被包含在文件/etc/mysql/mysql.cnf中。 文件/etc/mysql/my.cnf僅包含/etc/mysql/conf.d文件夾中的文件,而這些文件仍在被包含。
作為root(sudo su),我一直不停地嘗試找出原因為何停止,並且其中一個非常有用的命令是...
mysqld --user=mysql --verbose --help
這顯示了mysqld試圖用來啟動服務的所有值。 我立即看到datadir值不是我的配置文件中的值。 這就是為什么當我手動運行命令並指定數據目錄但在嘗試正常啟動服務時失敗時它起作用的原因。
我不知道為什么不再讀取文件/etc/mysql/mysql.cnf。 權限看起來很好。 我什至嘗試將內容復制到新文件,什么也沒有。 help命令說它僅按此順序讀取這些文件。
/etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf
因此,由於厭倦了此操作,因此將包含行從mysql.cnf文件復制到了my.cfn文件中。 我真的不在乎文件夾的位置,只要它可以工作即可。
現在,該服務可以正常啟動。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.