昨夜、MySQLサーバーが突然ダウンしました。再起動しようとすると(_service mysql restart
_-私はrootです)、単にハングアップします。 _mysql -u root -p
_コマンドを使用すると、ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
が得られます。次に、デーモンを手動で起動しようとしました(mysqld
)。プロンプトは約2秒間ハングしてから戻ります。エラーログを詳しく調べると、次のことがわかりました。
_2016-01-22T19:18:32.399584Z 0 [ERROR] Could not create unix socket lock file /var/run/mysqld/mysqld.sock.lock.
_
_2016-01-22T19:18:32.399622Z 0 [ERROR] Unable to setup unix socket lock file.
_
_2016-01-22T19:18:32.399646Z 0 [ERROR] Aborting
_
次に、_chown mysql /var/run/mysqld
_、_chmod -R 775 /var/run/mysqld
_、_touch /var/run/mysqld/mysqld.sock.lock
_および_apt-get install mysql-community-server --reinstall
_を試しました。運が悪い。
私は周りを見回しましたが、解決策を見つけることができませんでした。ここで何か助けはありますか?
注:MySQLコミュニティサーバー5.7.10でDebian 8(Jessie)を実行しています
修繕。 my.cnf
セクションの下の[mysqld]
にskip-external-lockingを追加し、システム全体を再起動します。これを見つけた人は誰でも、これで解決するはずです。また、データをバックアップしてから、復元を試み、rm ib*
に機能させるように指示された場合は、ibdata
ファイルが必要です。
今後の旅行者へのメモ:特定の構成によって異なりますが、これはvery apparmorの問題である可能性があります。ロックを無効にしたくない場合は、syslogを見て、そのファイルでapparmorが拒否されているかどうかを確認してください。
次のようなものが表示されます:apparmor="DENIED" operation="open" parent=29871 profile="/usr/sbin/mysqld" name="/run/mysqld/mysqld.sock.lock"
他の/run/mysqld/mysqld.sock.lock rw
エントリの近くに/etc/apparmor.d/usr.sbin.mysqld
を/run/*
に追加し、apparmorをリロードすることで修正できます。
同じ正確なエラーメッセージで同じ問題が発生しましたが、私の場合は、アプリリポジトリのアップグレードが原因で、想定どおりに動作しませんでした。したがって、私の場合は、手動でmysql_upgrade -u adminname -p
を実行し、サーバーを再起動するだけでうまくいきました。