MySQLサーバーに外部ホストから接続する

localhost以外からつなぐ方が業務的には圧倒的に多いのだけど、趣味的にはまるでこの世にはlocalhostしかないんじゃないかっていうぐらい外部ホストのMySQLに接続することはないです。

権限の設定

mysqlの権限設定grantでユーザー・パスワード・ホスト・DB名をいっしょくたに絡めて設定します。その際にホストの設定もすることになります。このホストにmysqlに接続してくるクライアント側のやホスト名を設定します。rootで設定しないとダメです。

mysql> grant all privileges on [DBNAME].* to [USERNAME]@[HOSTNAME] identified by '[PASSWORD]' with grant option;

これでmysqlそれ自体では設定したIP(許可したIP)から接続可能なのですが、それ以外の設定がややこしい。hosts.allowやiptables、なんか知らないところにあるWAF、予想外に遮断されているネットワークなどなど障壁がいっぱい。
とはいいつつ、自分が知り得るネットワーク内だったら楽ちん。

iptables

iptablesはこれで設定しておく。

-A INPUT -p tcp -m state --state NEW -m tcp --dport 3306 -j ACCEPT
hosts.allow hosts.deny
# /etc/hosts.allow
mysqld : [HOSTNAME]
# /etc/hosts.deny
mysqld : All

ここがとてもきれいにまとまっております。
http://blog.kur.jp/entry/2011/07/03/mysql/

Last update: 2016.03.09 (水)