mysql: 外部からの接続を受け付けなくなって困った話
きっかけは、Ubuntu 14.04 上で運用中の MySQL 5.6 をアップグレードしたこと。
apt-get install がうまく行かないので、悪戦苦闘した後に、/var/lib/mysql のバックアップを取ってから apt-get purge してから最新の MySQL 5.6 をインストールして、/var/lib/mysql を戻すという方針に転換しました。
いちおううまく動いたのですが、なぜか外部からの接続を受け付けなくなってしまいました。lsof
で調べると確かに localhost
をリスンしている。
$ lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 28953 mysql 13u IPv4 466855 0t0 TCP localhost:3306 (LISTEN)
/etc/mysql/my.cnf
を見返したり、ネット検索で類似の事象を探したりしたけれど、原因が分かりません。
いったん休憩してぼんやり考えていると、「ああ、/usr/my.cnf
か」と思い当たりました。このファイル、初期インストール時や mysql_install_db
実行時に、なぜか作られる設定ファイルで、そこに
bind-address = 127.0.0.1
と書いてあって、この行を消すかコメントアウトしなければいけないのでした。
MySQL のサーバー再起動後の lsof
の結果は次の通り:
$ lsof -i :3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 29004 mysql 13u IPv4 466919 0t0 TCP *:3306 (LISTEN)
しかし、何のために /usr/my.cnf
が作られるのかは依然として不明。