運用方針として、外部接続用の専用ユーザーを作成し、そのユーザーからのみ、外部接続を許可します。
1) すべてのホストから接続を許可する場合
mysql> grant select,insert,update,delete on test_db.* to ext_user@"%" identified by '<PASSWORD>';
2) example.com からのみ接続を許可する場合
mysql> grant select,insert,update,delete on test_db.* to ext_user@"example.com" identified by '<PASSWORD>';
3) LAN上のすべてのホストから接続を許可する場合
mysql> grant select,insert,update,delete on test_db.* to ext_user@"192.168.%" identified by '<PASSWORD>';
※ 全権限を与えたい場合は下記のようにする
mysql> grant all privileges on ...
※ 全テーブルに権限を与えたい場合は「test_db.*」を下記のようにする
test_db.* ⇒ *.*
1~3のいずれかを実行後、設定を反映させる
mysql> flush privileges;
接続テスト
% mysql -h <DB_HOST DOMAIN or IP_ADDR> -u ext_user -p Enter password:
接続したら、念のため意図しないデータベースが見えてないか確認する
mysql> show databases;
最初からやり直したい時は、ユーザーを削除しよう。
ユーザの削除
mysql> delete from mysql.user where user='ext_user';
権限の剥奪
mysql> revoke all privileges on *.* from ext_user;
設定の反映
mysql> flush privileges;