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 が作られるのかは依然として不明。