概要
サーバ上にMySQLをインストールしたいと思った場合に、ソースからビルドするよりもapt-getのようなパッケージマネージャを使ってインストールすることの方が多いと思います。
今回、私はUbuntuでapt-getを使ってMySQLをインストールしようとした際に外部からそのMySQLに接続できないということがあったので、それをどのようにして解決したのかを書いておきます。
環境
- Ubuntu 16.04 LTS
- MySQL
原因
私の場合、Ubuntuからapt-get install mysql-serverのようにしてMySQLをインストールし、何も設定を変更せずに使っていました。
そして、ファイアウォール関連で接続できないようになっているかと思い、ファイアウォールの設定を見直しましたが、何もおかしくはありませんでした。
そこで、MySQLのデフォルトのポートである3306が開放されているのかを確認するために、netstat -auntというコマンドを実行すると、MySQLのバインドアドレスが127.0.0.1ということに気づきました。
127.0.0.1ということは、ローカルホストからしか接続できないということなので、これでは外部からMySQLに接続することはできません。
解決
調べてみると、/etc/mysql/mysql.conf.d/mysqld.cnfというファイルでバインドアドレスの設定がされていることが分かりました。
そのファイルの次の箇所でバインドアドレスは設定されています。
bind-address = 127.0.0.1
これをコメントアウトするか次のように書き換えます。
bind-address = 0.0.0.0
0.0.0.0は全てのIPからの接続を受け付けるということを表します。
あとは、MySQLを再起動すれば外部から接続することができるようになりました。
さいごに
まさかバインドアドレスが違うとは思ってもいませんでした。