MySQLでmysqld.sockのエラーが出た (Ubuntu16.04)

f:id:daihase:20190809115406j:plain

こんばんは、daihaseです。

自分が見てるNode.js製のサービスがあって、先日重大なセキュリティアップデートの件もあったので久々サーバー周りみていて、いざアプリを起動したらエラーが...

あれ?昨日とか普通に動いてたのに、と色々潜ってログ等漁っていたらどうもMySQLが起動していませんでした。

調べてみると

 

ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

 

MySQLのsocketがなにやら問題を...!? MySQL5.7使ってるのでドキュメントを見てみると、...

socketファイルが消滅しちゃってるか、見つからないか、なんにせよ自分しかサーバーをいじってない環境ではありましたが、プロセスを確認したらしっかりMySQLは起動してないし...。

しょうがないので色々最初からやり直し。 deamonが参照出来るようにシンボリックリンクを貼り直します。

$ sudo ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock</pre>

&nbsp;

一旦MySQLを停止。

<pre class="lang:zsh decode:true ">$ sudo /etc/init.d/mysql stop</pre>

/tmpと/var/run/mysqldにsocketファイルがあったら一旦消しましょう。(MySQL起動時に自動で生成される)

<pre class="lang:zsh decode:true ">$ sudo rm -f /var/run/mysqld/mysqld.sock
$ sudo rm -f /tmp/mysql.sock

 

MySQLを起動。

$ sudo /etc/init.d/mysql start

 

これで無事起動出来るようになりました。 まぁ最初のエラーは前回何かあってMySQLが停止しちゃってて、mysql -u root -pとやっても出る内容なんで、まずは上記のを実行する前に以下コマンドで再起動してから確認したほうがいいかもしれません。

$ sudo /etc/init.d/mysql restart

 

socketファイルの権限問題だったり、消失したり、そもそもMySQL停止ってたり、色々パターンあるので簡単なのから確認していけばいいですね。

それでは良い開発ライフを〜