まさひちの道具箱

趣味の話から技術・仕事まであらゆることをたれ流していきます

ラズパイのmysqlが再起動できない

ラズパイで使っていたmysqlが、ある日突然起動しなくなりました。 昨日まで普通に動いてたやんけー!!って思いながら原因調査。 なんだか結構ハマってしまったので、メモしておきます。

問題発生

久々にラズパイで

$ sudo apt-get update

を叩いたところ、、mysqlでエラーが発生。

試しにリスタートしてみる。

$ sudo systemctl restart mysql.service

結果は・・・

Job for mysql.service failed. See 'systemctl status mysql.service' and 'journalctl -xn' for details.

$ sudo systemctl status mysql.service
● mysql.service - LSB: Start and stop the mysql database server daemon
   Loaded: loaded (/etc/init.d/mysql)
   Active: failed (Result: exit-code) since 1min 24s ago
  Process: 20927 ExecStart=/etc/init.d/mysql start (code=exited, status=1/FAILURE)

raspberrypi /etc/init.d/mysql[20857]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)'

なんでやねん・・・

 

エラーメッセージでググってみると、どうやらsockファイルがないのが原因らしい。

適当にtouchで作ってみるが

raspberrypi /etc/init.d/mysql[20857]: error: 'Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)'

あー、直んね。

解決方法

しょうがないので、エラーログを見てみる。

$ sudo cat /var/log/mysql/error.log | grep ERROR

[ERROR] /usr/sbin/mysqld: unknown variable 'default-set-server=utf8mb4'
[ERROR] Aborting

え?この前までこれで動いていたんだが・・・?

unknown variable 'default-set-server=utf8mb4'でググってみると、中国語のサイトにたどり着いた。

どうやら、

default-set-server=utf8mb4

ではなく

character-set-server=utf8mb4

にすればいいようだ。アップデートで変更になってしまったのだろうか。。

これでちゃんと

$ mysql -u root -p

も通るようになった。

まとめ

[client]には
default-character-set=utf8mb4
[mysqld]には
character-set-server=utf8mb4

を設定しましょう。以上。