
我正在嘗試在 Kubuntu 16.04 上安裝 mysql-server-5.7,但遇到了麻煩。
sudo apt install mysql-server
給出以下輸出。
Setting up mysql-server-5.7 (5.7.18-0ubuntu0.16.04.1) ...
Renaming removed key_buffer and myisam-recover options (if present)
Job for mysql.service failed because the control process exited with error code. See "systemctl status mysql.service" and "journalctl -xe" for details.
invoke-rc.d: initscript mysql, action "start" failed.
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: enabled)
Active: activating (auto-restart) (Result: exit-code) since ons 2017-05-17 09:48:39 CEST; 10ms ago
Process: 13622 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=exited, status=0/SUCCESS)
Process: 13621 ExecStart=/usr/sbin/mysqld (code=exited, status=2)
Process: 13612 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exited, status=0/SUCCESS)
Main PID: 13621 (code=exited, status=2)
maj 17 09:48:39 anis systemd[1]: Failed to start MySQL Community Server.
maj 17 09:48:39 anis systemd[1]: mysql.service: Unit entered failed state.
maj 17 09:48:39 anis systemd[1]: mysql.service: Failed with result 'exit-code'.
dpkg: error processing package mysql-server-5.7 (--configure):
subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of mysql-server:
mysql-server depends on mysql-server-5.7; however:
Package mysql-server-5.7 is not configured yet.
dpkg: error processing package mysql-server (--configure):
dependency problems - leaving unconfigured
Errors were encountered while processing:
mysql-server-5.7
mysql-server
E: Sub-process /usr/bin/dpkg returned an error code (1)
當嘗試透過運行進行故障排除時,journalctl -xe
我得到以下輸出,這似乎表明 AppArmor 給我帶來了麻煩。
maj 17 09:53:14 anis systemd[1]: Starting MySQL Community Server...
-- Subject: Unit mysql.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-devel
--
-- Unit mysql.service has begun starting up.
maj 17 09:53:14 anis audit[14767]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/status" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
maj 17 09:53:14 anis audit[14767]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=0
maj 17 09:53:14 anis kernel: audit: type=1400 audit(1495007594.314:240): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/status" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
maj 17 09:53:14 anis kernel: audit: type=1400 audit(1495007594.314:241): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=0
maj 17 09:53:14 anis kernel: audit: type=1400 audit(1495007594.314:242): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/status" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
maj 17 09:53:14 anis audit[14767]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/status" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
maj 17 09:53:14 anis audit[14767]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/task/14767/mem" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
maj 17 09:53:14 anis kernel: audit: type=1400 audit(1495007594.658:243): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/proc/14767/task/14767/mem" pid=14767 comm="mysqld" requested_mask="r" denied_mask="r" fsuid=124 ouid=124
maj 17 09:53:14 anis systemd[1]: mysql.service: Main process exited, code=exited, status=2/INVALIDARGUMENT
我該如何解決這個問題?
答案1
您需要編輯 apparmor 設定以允許 MySQL 存取這些檔案。日誌訊息告訴您/usr/sbin/mysqld
需要 read ( r
) 存取權限才能開啟/proc/14767/status
、/sys/devices/system/node/
(尾部斜杠,因為它要讀取目錄)和/proc/14767/task/14767/mem
。要編輯的文件是/etc/apparmor.d/usr.sbin.mysqld
.
就我而言,我透過在中間某處添加這些行(每行前面有兩個空格)解決了問題:
/proc/*/status r,
/sys/devices/system/node/ r,
/sys/devices/system/node/node0/meminfo r,
(請注意第二行的尾部斜線。)
完成此操作後,嘗試啟動 MySQL,如果出現更多錯誤,也新增這些檔案並重試。
這裡這是我在其他地方對此問題給出的答案。
答案2
可能是這樣的: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=739846 所以嘗試使用
echo "exit 0" >> /etc/init.d/mysql
dpkg --configure -a
如果它沒有幫助使用:
sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-5.5
sudo apt-get install mysql-server
完全刪除您的 mysql 並重新安裝警告:如果您有任何資料庫,它們將被刪除。
答案3
我用這個解決了這個問題:
編輯/etc/apparmor.d/local/usr.sbin.mysqld
新增以下行:
/data/ r,
/data/** rwk,
重新載入apparmor服務
sudo service apparmor reload
答案4
就我而言,在使用上述答案後嘗試在 Ubuntu 16.04 上安裝 mysql-server-5.7 時,有效的方法是:
- 跑步
sudo apt install mysql-server
- 檢查上面的確切錯誤
- 重啟
- 再次運行
sudo apt install mysql-server
繼續安裝
安裝完成。