2017-06-15 92 views
3

我想再次看看我的LogServer,但所有的突然當我訪問的URL我得到這個消息:的Mysql無法啓動了

我在Ubuntu xenial

FATAL運行:無法連接到MySQL服務器在'localhost'上。請確保您在指定一個有效的MySQL數據庫名稱「包括/ config.php文件」

當我這樣做journalctl -xe我得到以下信息:

-- Unit mysql.service has begun starting up. 
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112 

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0 

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112 
Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:69): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" 
name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_m 

Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:70): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r" 

Jun 15 19:26:12 arjanlog kernel: audit: type=1400 audit(1497547572.504:71): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_m 

Jun 15 19:26:12 arjanlog systemd[1]: mysql.service: Main process exited, code=exited, status=1/FAILURE 

有沒有人有什麼想法?

+0

我在說一句話'DENIED',它似乎是一個權限問題。 –

+0

試試這個:'sudo apt-get install mysql-server' – Edward

+0

@Edward mysql-server已經是最新的版本(5.7.18-0ubuntu0.16.04.1) – Arjan

回答

0

要解決:sudo的服務的AppArmor拆卸

+1

這就是解決它的方法...... – Papotitu

0

它可能沒有必要完全停止AppArmor的。它應該是足夠的蠻力禁用AppArmor的啓動mysqld,如果你不想追查的核心問題:

ln -s /etc/apparmor.d/usr.sbin.mysqld /etc/apparmor.d/disable/usr.sbin.mysqld

6

我也有這個問題,並通過在/etc/apparmor.d/usr.sbin.mysqld的AppArmor的配置文件修復解決了它。我添加這些行:

/proc/*/status r, 
    /sys/devices/system/node/ r, 
    /sys/devices/system/node/node0/meminfo r, 

journalctl -xe輸出顯示MySQL需要使用的許可文件。您還可以在/var/log/syslog

Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112 
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=0 
Jun 15 19:26:12 arjanlog audit[3665]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/3665/status" pid=3665 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=112 ouid=112 

這意味着,/usr/sbin/mysqldDENIED試圖打開/proc/3665/status/sys/devices/system/node/閱讀(r)。

請注意,在apparmor配置文件中,尾部斜槓/sys/devices/system/node/是必要的,所以不要離開它!

0

對我來說,錯誤是,MySQL數據庫被損壞。我看得出來,當我去記錄/var/log/mysql/error.log,它顯示了一個錯誤:

InnoDB: Database was not shutdown normally! 

有一些解決方案在那裏這人可以使用像table corruption issue

但正如我沒它沒有爲我工作無法以WRITE模式啓動服務器以解決問題。

我設法通過創建一個目錄副本/var/lib/mysql來解決問題 - 我複製到mysql.old,然後刪除mysql目錄。

然後我打電話在終端的命令:

sudo mysqld --initialize --initialize-insecure 

要生成新的mysql目錄

然後我已通過改變mysql目錄的用戶和組到用戶改變的新的目錄的權限:mysql和組:mysql。使用chown命令:

sudo chown -R mysql:mysql /var/lib/mysql 

然後我打電話命令:

sudo mysql -u root 

,並改變密碼:

SET PASSWORD FOR [email protected]'localhost' = PASSWORD('newpassword'); 

然後重新啓動MySQL服務器:

​​

和夏娃有效的工作。


某些命令,我​​一路上都使用(雖然不知道他們到固定的問題有多大貢獻):

sudo apt-get --reinstall install mysql-server-5.7