今回は外部ホストからMySQLへ接続できるように設定する方法を書き留めておきたいと思います。
なぜ、この設定が必要かというとMySQLではデフォルトで外部ホストからのアクセスを許可していないためです。
それでは、外部ホストからMySQLへ接続することはどのようなことかというと、、
まず、「サーバーA←サーバーB」という構成があります。
この場合、外部ホストであるサーバーB(22.***.***.***)からサーバーA(11.***.***.***)のMySQL(DB)へ接続することです(11.***.***.***や22.***.***.***は任意のIPです)。
なお、ホストとは、
TCP/IPネットワークにおけるホスト
インターネットなどのTCP/IPネットワークでは、IPアドレスが割り振られ他の機器とIP(Internet Protocol)で通信可能なコンピュータや情報・通信機器のことをホストという。
『ホストとは|host - 意味/定義 : IT用語辞典』
つまり、IP「11.***.***.***」が割り当てられたサーバーAやIP「22.***.***.***」が割り当てられたサーバーBがホストとなります。
それでは、下記で外部ホストからMySQLへ接続できるように設定する手順を書いていきます。
1.MySQLにrootでログインします。
# mysql -u root -p
Enter password:
2.登録ユーザーを確認します。
この段階では、下記をみるとrootは127.0.0.1とlocalhostから、hogeはlocalhostからの接続が許可されていることが分かります。
つまり、hogeはlocalhost以外からのアクセスは許可されていません。
mysql> select user,host from mysql.user;
+------------------+---------------------------+
| user | host |
+------------------+---------------------------+
| root | 127.0.0.1 |
| root | localhost |
| hoge | localhost |
+------------------+---------------------------+
3 rows in set (0.00 sec)
3.存在するデータベースの一覧を確認します。
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| hogedb |
| mysql |
| test |
+--------------------+
6 rows in set (0.00 sec)
4.外部ホストから接続できるように設定する。
上記3でhogedbというデータベースがあることが確認できました。
hogedbに対してhogeで外部ホストからアクセスできるように設定します。
mysql> grant all privileges on hogedb.* to hoge@"22.***.***.***"
-> identified by 'パスワード' with grant option;
Query OK, 0 rows affected (0.00 sec)
5.設定が反映されたかを確認します。
hogeユーザーに外部ホストであるサーバーBのIP「22.***.***.***」が割り当てられていることが確認できます。
mysql> select user,host from mysql.user; +------------------+---------------------------+
| user | host |
+------------------+---------------------------+
| root | 127.0.0.1 |
| root | localhost |
| hoge | localhost |
| hoge | 22.***.***.*** |
+------------------+---------------------------+
4 rows in set (0.00 sec)
6.接続テストを行います。
外部ホストであるサーバーB(22.***.***.***)からサーバーA(11.***.***.***)のDBであるhogedbへhogeユーザーで接続してみます。
$ mysql -h 11.***.***.*** -u hoge -p -D hogedb
Enter password:
なお、不要になった設定は下記で削除します。
drop user hoge@"22.***.***.***"
以上です!
【参考サイト】
『MySQL:外部ホストからのDBアクセス方法 』
『MySQLに外部ホストから接続できるように設定する 』
『MySQL 外部ホストからアクセスする』
『MySQLで他のサーバーからの接続を許可する』