2017-08-21 67 views
0

我已閱讀了許多其他帖子有類似的問題,但似乎都沒有同樣的問題,我有,所以我希望有人可以幫助。服務mysql啓動離開「特權表:表'mysql.user'不存在」在我的日誌文件和服務器失敗

我看到的所有其他帖子,在某種程度上說,重新開始一個新的安裝,或者至少銷燬並重建所有用戶和其他引用構建的主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是根本原因,但重新安裝它沒有任何幫助。它現在被禁用,服務正在運行,但只有當我以另一種方式啓動它時,這不是我想要做的。我想回到開始正常/正確的方式。替代方案只是讓我現在開始運行的一個暫停空缺。

謝謝!

回答

0

我還不確切知道爲什麼會發生這種情況。我相信這與刪除apparmor有關,但我無法證明這一點。我也不能理解爲什麼會發生,但現在事情正常。

在事情正在進行的時間和事情停止工作的時間之間,我執行的系統唯一的變化就是刪除apparmor。

不知何故,我的/etc/mysql/mysql.conf.d文件夾中的配置文件停止讀入。它們被包含在文件/etc/mysql/mysql.cnf中。文件/etc/mysql/my.cnf只包含文件夾/etc/mysql/conf.d中的文件,這些文件仍然包含在內。

作爲根(須藤蘇)我不停地擺弄試圖弄清楚爲什麼事情已經停止了和一個命令是非常有幫助的是這樣的......

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文件。只要它工作,我真的不關心該文件夾包含在哪裏。

現在服務啓動完美,因爲它應該。