MySQLでは初期設定のままでは、外部ホストからのアクセスを許可していません。外部ホストからアクセスするためには、設定を行う必要があります。

例えば、IPアドレス「153.000.000.000」と「160.000.000.000」のサーバーがあったとします。

今回は、接続元(160.000.000.000)から、接続先(153.000.000.000)のデータベースに対して、外部接続できるように設定します。

接続先のサーバー作業(153.000.000.000)

MySQLにログインします。

$ mysql -u root -p

ユーザー一覧を確認します。

mysql> select user, host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| oc_user       | localhost |
| root          | localhost |
+---------------+-----------+
4 rows in set (0.03 sec)

データベース一覧を確認します。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| testtable          |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

接続を設定するコマンドを実行します。

mysql> grant all privileges on testdb.* to root@"160.000.000.000%" identified by 'testpasswd' with grant option;

詳細は以下のとおりです。

  • ユーザーにすべての権限を与える
  • testdbの接続を許可する
  • rootユーザーの接続を許可する
  • IPアドレス(160.000.000.000)のサーバーからの接続を許可する
  • 接続をする際のパスワードは「testpasswd」とする

設定を反映します。

mysql> flush privileges;

接続元のサーバー作業(160.000.000.000)

接続テストをします。

$ mysql -h 153.000.000.000 -u root -p

これで先ほど設定したパスワードを入力し、「Welcome to the MySQL monitor. Commands end with ; or \g.」と出ればOKです。

もし、ターミナルから現在操作しているサーバーのIPアドレスを確認したい場合、「hostname -i」を実行すれば、IPアドレスが表示されます。私はよく使っています。

以上です。

参考

MySQL :: 外部ホストから接続を許可する