環境:
Ubuntu 12.04 LTS (32bit)
MySQL 5.5
MySQLはこちらでインストール済み。
前提として開発環境として使うのでセキュリティについては考慮しない。
iptables の変更
MySQL が使う3306ポートの開放が必要だが今回は Firewall をオフにして対応する。 iptablesを確認。
$ sudo ufw status
Status: inactive
元々無効となっていた。
MySQL の bind-address 変更
netstat でポートを確認。
$ netstat -ant Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN
127.0.0.1 で LISTEN してるので外部から接続できない。
/etc/mysql/my.cnf
のbind-address
をコメントアウトする。
#bind-address = 127.0.0.1
MySQL のユーザ権限変更
接続許可ユーザの確認。
mysql> select user, host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | 127.0.0.1 | | root | ::1 | | | localhost | | debian-sys-maint | localhost | | root | localhost | | | vm-node1 | | root | vm-node1 | +------------------+-----------+ 7 rows in set (0.00 sec)
接続を許可するユーザ、ホストを指定して grant 文を実行する。(rootユーザでパスワードなし)
grant all privileges on *.* to root@'192.168.%'; grant all privileges on *.* to root@'172.%'; flush privileges;
MySQL 再起動
最後に MySQL を再起動して設定を反映する。
sudo /etc/init.d/mysql restart
確認。
$ netstat -ant Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
mysql> select user, host from mysql.user; +------------------+-----------+ | user | host | +------------------+-----------+ | root | 127.0.0.1 | | root | 172.% | | root | 192.168.% | | root | ::1 | | | localhost | | debian-sys-maint | localhost | | root | localhost | | | vm-node1 | | root | vm-node1 | +------------------+-----------+ 9 rows in set (0.00 sec)