現象
MySQL8.0 起動時に以下のようなエラーで怒られたので対処。
yyyy-MM-ddThh:ii:ss.mmmmmm-zz:zz 0 [ERROR] [MY-010338] [Server] Can’t find error-message file ‘/var/lib/mysql/share/mysql-8.0/errmsg.sys’. Check error-message file location and ‘lc-messages-dir’ configuration directive.
設定として、 my.cnf
は以下のようなディレクトリ指定をしていました。
[mysqld]
basedir = /var/lib/mysql
datadir = /var/lib/mysql/data
これが標準とずれているのか、エラーメッセージのファイルが見付からない、と怒られて MySQL が起動できませんでした。
対処
まずはエラーメッセージの在り処を探します。
# find / -name "*errmsg*"
/usr/share/mysql-8.0/norwegian/errmsg.sys
/usr/share/mysql-8.0/serbian/errmsg.sys
## 略
/usr/share/mysql-8.0/
の下にあるようです。そこで、設定ファイルに以下のように追記しました。
[mysqld]
basedir = /var/lib/mysql
datadir = /var/lib/mysql/data
# error messages
lc_messages_dir = /usr/share/mysql-8.0 #追加
これでエラーが発生しなくなりました。
参考
- what causing an error about ‘lc-messages-dir’ when i initialize mysql-5.7.17 – Stack Overflow
- MySQL :: MySQL 5.6 リファレンスマニュアル :: 10.2 エラーメッセージ言語の設定 ※5.6のリファレンスですが
lc_messages_dir
の参考までに