ラズパイの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
を設定しましょう。以上。