外部のホストから接続できるようにする方法

外部のホストからアクセスできるDBユーザーの作成方法について解説します。開発環境などで、外部からMySQLにアクセスしたいときに活用できます。

現在の状況を確認

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

rootユーザー は、 localhost からしか接続できないようです。

外部のホストからアクセス可能にする

特定IPからアクセス可能にするには、以下クエリを実行します。

grant all privileges 
on [db_name].* to [user_name]@"[ip_address]" 
identified by '[password]' with grant option;

ここでは、 rootユーザー がどこからでもアクセスできるようにしてみます。
どこからでもアクセスできるようにするには、 % を利用します。

grant all privileges
on *.* to root@"%"
identified by 'xxxxxxxxxxxxx' with grant option;
mysql> select user, host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| root          | %         |
| mysql.session | localhost |
| mysql.sys     | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

接続中ユーザの権限情報を確認

特定DBだけアクセスできないなどあれば、権限情報を確認してみてください。 SHOW GRANTS を実行すると、接続中ユーザの権限情報を確認できます。

mysql> SHOW GRANTS;
+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
| GRANT PROXY ON ''@'' TO 'root'@'%' WITH GRANT OPTION        |
+-------------------------------------------------------------+
2 rows in set (0.00 sec)