AppArmorが原因でMySQLが起動しませんか?


30

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

この問題を解決するにはどうすればよいですか?


6
将来の読者への注意:拒否されたapparmorメッセージは単なる警告であり、MySQLは別の理由で終了する可能性があります-を参照してください/var/log/mysql/error.log。MySQLは、上記の/ procおよび/ sysファイルにアクセスできない場合でも実行できるはずです。
SystemParadox

ディスクがいっぱいでないことを確認してください。
バトルビュートス

回答:


31

MySQLがこれらのファイルにアクセスできるようにするには、apparmor設定を編集する必要があります。ログメッセージは、開く/usr/sbin/mysqldための読み取り(r)アクセスが必要であることを通知しています(ディレクトリを読み取りたいため/proc/14767/status/sys/devices/system/node/最後にスラッシュを付けます)/proc/14767/task/14767/mem。編集するファイルは/etc/apparmor.d/usr.sbin.mysqldです。

私の場合、中央のどこかにこれらの行を追加することで問題を解決しました(それぞれの前に2つのスペースがあります)。

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

(2行目の末尾のスラッシュに注意してください。)

その後、MySQLを起動してみてください。さらにエラーが発生する場合は、それらのファイルも追加して、もう一度やり直してください。

他の場所でこの問題に私が与えた答えはここにあります。


6
apparmourインストールするためmysqlに設定を手動で編集する必要があるのはなぜですか?その場合は問題があります。
ジョージウドセン

2
@Georgeに同意します!ここでは、同じ問題を共有する他の人とランチパッド・レポート:bugs.launchpad.net/ubuntu/+source/mysql-5.7/+bug/1610765元記者が異なるものを持っていたが、(ほとんどのコメンターが、ここで同じログメッセージを報告します。 )
ポールAユングワース

3
/proc/*/status r不必要に開いています。Apparmorには現在のPridのマッチャーがあります。したがって、次のようにできます 。NUMAサポートがある場合、またはマシンに複数のCPUが公開されている場合は@{PROC}/@{pid}/status r, 、ワイルドカードアクセスすることnode*/meminfoもできます。
マーティンフット

3
また、その後にapparmorを再起動する必要がある場合があります。– sudo service apparmor restart
Zbyszek

1
/etc/apparmor.d/local/user.sbin/mysqldデフォルトのプロファイル更新との衝突を避けるために、代わりにそれを入れることが理にかなっているかもしれません。デフォルトプロファイルに既に含まれています
Marat

6

それは、このことがあります 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を完全に削除して再インストールする警告:データベースがある場合、それらは削除されます。


提案をありがとう!私の/etc/init.d/mysqlは既にexit 0最後にあります。mysql-serverをパージして再インストールしようとしましたが、助けにはなりませんでした。mysql-commonを(パージせずに)再インストールしようとしましたが、これも役に立ちませんでした。削除するには、それに依存する多くのパッケージをアンインストールする必要がありますが、これは少し怖いです。
超常現象

私はsudo apt remove --purge mysql-*すべてのMySQLのものを完全に削除しました(バージョン5.7があります)sudo apt install akonadi-server mysql-client mysql-server。それでも同じエラーメッセージが表示さjournalctl -xeれ、上記と同様にAppArmorの問題が示されます。
スーパー

1

これでこの問題を解決しました。

/etc/apparmor.d/local/usr.sbin.mysqldを編集します

これらの行を追加します。

/data/ r,
/data/** rwk,

Apparmorサービスをリロードする

#sudo service apparmor reload

0

私の場合、上記の回答を使用した後、Ubuntu 16.04にmysql-server-5.7をインストールしようとすると、うまくいったことは次のとおりでした:

  1. 走る sudo apt install mysql-server
  2. 上記の正確なエラーを調べます
  3. リブート
  4. sudo apt install mysql-serverもう一度実行してインストールを続行します

インストールの完了。


わかりましたが、残念ながらそれでもまだうまくいきません。
超常現象

0
  1. stop mysql-server
  2. rm /var/lib/mysql/ib_logfile*
  3. restart mysql

1
コードにはコードマークアップ{}を使用してください。コードマークアップを使用 すると読みやすくなります。回答を編集できます。
ロバートリードル

私は自分の名前を変更したib_logfile*ファイルをしていたapt upgradeが、MySQLに着いたときのapt、私は次の出力を得ました mysql_upgrade: [ERROR] 1812: Tablespace is missing for table mysql.plugin
supernormalが

素晴らしい、私は最初にそれをtarballしようとしましたが、mysqlはtarballを削除しましたが、今では別の理由で起動に失敗しています。Ubuntu 18.04。YMMV
チャイムエリヤ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.