MySQLをインストールしたのに起動しなくて困ったときどうデバッグしていったらいいかについてのメモです。
要約
- my.cnfにlog-errorを設定しないとログを吐かないので問題がなんだか分からない
- MySQL 5.5からmy.cnfの[mysqld]の項目default-character-setがなくなったので代わりにcharacter-set-serverを設定する
環境
FreeBSD 10
MySQL 5.6
インストールから起動まで
# pkg install mysql56-server
# /usr/sbin/sysrc mysql_enable=YES mysql_dbdir="/usr/local/mysql/data"
# cp /usr/local/share/mysql/my-medium.cnf /etc/my.cnf
# vi /etc/my.cnf
[mysqld]
skip-character-set-client-handshake
default-character-set = utf8
datadir=/usr/local/mysql/data
sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
[mysql]
default-character-set = utf8
# mkdir -p /usr/local/mysql/data
# chown -R mysql:mysql /usr/local/mysql
# chmod 764 /usr/local/mysql
# /usr/local/etc/rc.d/mysql-server start
Starting mysql.
# /usr/local/etc/rc.d/mysql-server status
mysql is not running.
MySQLが起動しません。起動しない原因を探すにもエラーメッセージは何も出てこないし、どこにもエラーログがありません。それもそのはず、MySQLのエラーログの出力先をmy.cnf
で設定しないといけないからです。エラーログを出力するには以下のようにmy.cnf
に追記します(参考)。
[mysqld]
log-error=/var/log/mysql/mysqld.log
そして指定したディレクトリを用意
# mkdir /var/log/mysql
# chown mysql:mysql /var/log/mysql
# chmod 664 /var/log/mysql
改めて起動してみると
# /usr/local/etc/rc.d/mysql-server start
Starting mysql.
# cat /var/log/mysql/mysqld-error.log | grep ERROR
2015-12-13 03:16:51 4794 [ERROR] /usr/local/libexec/mysqld: unknown variable 'default-character-set=utf8'
2015-12-13 03:16:51 4794 [ERROR] Aborting
エラーの原因が分かりました。default-character-set=utf8
が良くないようです。調べてみると、MySQL5.5からはcharacter-set-server=utf8
としないといけないそうです(参考)。my.cnfを修正したところ、無事起動できました。