これは、昨日同じエラーが発生してデバッグしましたが、実に高速です。
私がしているとき:
service mysql start
私はこのメッセージを受け取ります:
Job for mysql.service failed. See 'systemctl status mysql.service' and 'journalctl -xn' for details.
このため、私は次のようにしました:systemctl status mysql.service
そして得る:
Apr 16 18:11:25 darphus.xen.prgmr.com systemd[1]: Unit mysql.service entered failed state.
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: mysql.service holdoff time over, scheduling restart.
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: Stopping MySQL Community Server...
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: Starting MySQL Community Server...
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: mysql.service start request repeated too quickly, refusing to start.
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: Failed to start MySQL Community Server.
Apr 16 18:11:26 darphus.xen.prgmr.com systemd[1]: Unit mysql.service entered fai
journalctl -xn give:
Logs begin at Sun 2017-04-16 17:58:44 UTC, end at Sun 2017-04-16 18:16:35 UTC
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/pickup[938]: warning: 868F625E66:
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/pickup[938]: 868F625E66: uid=0 fro
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/proxymap[941]: warning: mysql:/etc
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/cleanup[1361]: warning: proxy:mysq
Apr 16 18:16:34 darphus.xen.prgmr.com postfix/cleanup[1361]: warning: 868F625E66
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/pickup[938]: warning: 8744E25E66:
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/pickup[938]: 8744E25E66: uid=0 fro
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/proxymap[941]: warning: mysql:/etc
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/cleanup[1362]: warning: proxy:mysq
Apr 16 18:16:35 darphus.xen.prgmr.com postfix/cleanup[1362]: warning: 8744E25E66
私はインターネットですべてのトリックを試してみましたが、今日は何もうまくいきません。
このため、私のウェブサイトはすべてダウンしています。
answer by @Lotfio Lakehalは問題を修正しますが、最後の手段と考える必要があります-必要なデータが含まれているデータベースでこれを実行すると、すべての構成値が削除されるため、絶対に実行しないでください。過程の中で。より良い方法は、my.cnfで問題の原因を見つけて修正することです。 MySQLにはこの機能が組み込まれています。
mysqld --help --verbose
上記のコマンドは、mysqlサーバーの起動をシミュレートします。それができない場合は、エラーメッセージと、構成ファイルの問題点の説明が表示されます。
たとえば、無効なデータを含むテスト構成ファイルをセットアップし、上記のコマンドを実行すると、次のようになります。
エラー:設定ファイルの前にグループがないオプションが見つかりました:/etc/mysql/my.cnf行:22
これにより、構成ファイルに簡単にアクセスして問題の構成を削除または編集できます。うまくいけば、サーバーを完全に再インストールしなくても、構成ファイルを修正できます。
これを明確にするためだけに answer をあきらめないでください。前の回答ですべての問題の99%が修正されますが、最後の手段と考える必要があります。理想的には、問題を修正し、それが発生した理由を理解して、将来同じ間違いをしないようにする必要があります。
通常、この問題は/etc/mysql/my.cnf.
の何かを変更しようとすると発生します
[〜#〜]警告[〜#〜]次の解決策は、すべてのデータベースデータを削除します!最初に他の解決策を試してください。
MySQLを再インストールすると問題が解決する場合がありますが、最後の手段としてのみ使用してください。再インストールするには:
Sudo apt purge mysql-server mysql-common
Sudo apt autoremove mysql-server mysql-common
そしてそれを再インストールします
Sudo apt-get update Sudo apt-get install mysql-server
これをチェックしてください: https://askubuntu.com/questions/392438/mysql-job-failed-to-start
注:このソリューションは、すべてのデータベースデータを削除します!だからあなたが何をしているかに注意してください。
私はmysql 5.7を使用してubuntu 18.04で同じ問題を実行していました
ログファイルで次の行を見つけました。
Jul 13 01:25:35 r-lap audit[11196]: AVC apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/node/" pid=11196 comm="mysqld" req
Jul 13 01:25:35 r-lap kernel: audit: type=1400 audit(1531425335.671:116): apparmor="DENIED" operation="open" profile="/usr/sbin/mysqld" name="/sys/devices/system/
Apparmorを停止すると、mysql startが成功し、sslサポートを有効にできないというメッセージが表示されました。サービスを停止します。
証明書を生成するには、次を実行します
Sudo mysql_ssl_rsa_setup --datadir /var/lib/mysql
場合によっては、datadirが異なる場合があります。それから
Sudo -i
cd /var/lib/mysql
chown mysql:mysql ./*
これにより、生成された証明書とキーファイルの権限が正しく設定されます。
次に、apparmorとmysqlの両方を起動できます。
これで私の問題は解決しました。
私は個別に試していないので、問題を修正したのはapparmorの再起動なのか、sslキーと証明書の生成なのかわかりません。
注:私は後で知りました このスレッド
Mysql 5.7のubuntu 18.04で同じ問題が発生しました。私が最初に行ったのは、mysqlエラーログに行くことでした。それは/var/log/mysql/error.logにあるはずです。
そこで私は次の行を見つけました:
_[ERROR] InnoDB: Cannot allocate memory for the buffer pool
_
メモリの問題のように見えたので、MySQLに関する記述がないかsyslogをチェックしました。
_grep mysql syslog
_
これはこれを表示しました:
kernel: [21270406.665399] Out of memory: Kill process 9674 (mysqld) score 251 or sacrifice child
スワップという形で「予備メモリ」があることを確認しました。
_free -m
_
これはこれを表示しました:
_total used free shared buff/cache available Mem: 985 522 69 45 393 276 Swap: 0 0 0
_
つまり、スワップ領域を設定する必要があります。
_Swap: 0 0 0
_
私の場合、mysqlはDigitalOceanにあり、それらのガイドはすばらしいので、次のことを参考にしてください。 buntu 18.04にスワップスペースを追加する方法
この回答は@ "James Lendrem"と組み合わせて読む必要があります answer 。
Mysql構成ファイルを変更または追加した場合は、行った操作を削除してみてください。
まず、syslogファイルを確認してください。
grep mysql /var/log/syslog | grep ERROR
このコマンドは、syslogで「mysql」という用語への参照を検索し、それらの結果を「ERROR」を含む結果に制限します。
次に、さまざまな構成ファイルを調べます。特定の構成ファイルを編集した場合は、そこから開始します。それ以外の場合は、次のディレクトリにあるすべての構成ファイルを調べます。
ls -l /etc/mysql/*.cfg
ls -l /etc/mysql/mysql.conf.d/
ls -l /etc/mysql/conf.d/
構成ファイルのいずれかを変更した場合は、mysqlサーバーを(再)起動します。
service mysql restart
# or else you could use for the first time:
service mysql start