WEBサービス創造記

WEBサービスを作ったり保守したりしてる人のメモブログです。

MySQLに外部ホストから接続できるように設定する

      2014/04/24

外部ホストからのMySQL接続

MySQLはデフォルトでは外部ホストからの接続を許可しないようになっています。
外部ホストからの接続を許可するには下記の手順で設定を行います。

データベースmysqlのuserテーブルにアカウントを追加

[root@centos ~]#  mysql -u root -p   ※MySQLにrootでログイン
Enter password:    ※パスワード応答
mysql> select user,host from mysql.user; ※ユーザーの確認
+-------+-----------------+
| user  | host            |
+-------+-----------------+
| root  | 127.0.0.1       |
| root  | localhost       |
| root  | linuxserver.jp  |
| user1 | localhost       |
+-------+-----------------+

上記の設定の内訳は下記通りです。

  • root@127.0.0.1 – IPアドレス”127.0.0.1(即ちローカルホスト)”からユーザ名rootでアクセス可能
  • root@localhost – ホスト”localhost(即ちローカルホスト)”からユーザ名rootでアクセス可能
  • root@localhost – ホスト”linuxserver.jp(ここではこれもローカルホスト)”からユーザ名rootアクセス可能
  • user1@localhost – ホスト”localhost(即ちローカルホスト)”からユーザ名user1でアクセス可能

このままではローカルからの接続しかできません。
外部ホストからの接続を許可するには下記コマンドを実行します(※例としてユーザ名”user1″、接続する外部ホストは”example.com”、利用するDBは”client_data”で設定)。

mysql> show databases;   ※存在するデータベースの一覧を確認
+--------------------+
| Database           |
+--------------------+
| information_schema |
| client_data        |
| mysql              |
| test               |
+--------------------+
mysql> grant all privileges on client_data.* to user1@"example.com" identified by 'パスワード' with grant option;

また、すべてのホストから接続できるようにするには下記のようにワイルドカードを指定して設定します。

mysql> grant all privileges on client_data.* to user1@"%" identified by 'パスワード' with grant option;

LANのすべてのホストから接続できるように設定するには下記のように行います。

mysql> grant all privileges on client_data.* to user1@"192.168.1.%" identified by 'パスワード' with grant option;

外部ホストからのログイン

外部ホストからの接続を許可するように設定したら、実際に外部ホストからログインができるか確認します。
外部ホストにもMySQLがインストールされていることが条件になるので、環境がない場合はインストールする必要があります。

[root@centos ~]#  mysql -h linuxserver.jp -u user1 -p

上記コマンド実行後、ログインが成功すれば設定完了です。

 - MySQL , ,