MySQL 外部ホストからアクセスする

 

root でログイン後、登録されているユーザを調べて、外部IPアドレスを追加登録する。

 

■ユーザを調べる 

mysql> use mysql;
mysql> select user, host from user;
+---------+----------------------+
| user    | host                 |
+---------+----------------------+
| root    | aaa-web.mydomain.com |
| root    | localhost            |
| kataoka | localhost            |
+---------+----------------------+
5 rows in set (0.00 sec)

 

■データベースを調べる

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| xxxdb |
| mysql |
| test |
+--------------------+
4 rows in set (0.00 sec)

 

 ■外部IPアドレスを追加する

kataokaユーザ が 192.168.1.* から xxxdb へアクセスできるように追加設定する。

mysql> grant all privileges on xxxdb.* to kataoka@"192.168.1.%"
    -> identified by 'hoge' with grant option ;

 

kataoka@"%"  全てのホストからアクセス可能

kataoka@localhost  サーバにログインしてからアクセス可能

kataoka@"192.168.1.12"   IPアドレスが192.168.1.12のホストからアクセス可能

kataoka@"mydomain.co.jp"   ドメインがmydomain.co.jpからのアクセスが可能

 

with grant option このユーザにGRANTコマンドを実行する権限を与える場合にこのオプションを追加する。 自分の場合、MySQLをよく知っている管理者等のユーザにこのオプションを付けている。

 

■その他

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

$ mysql -h 192.168.1.12 -u kataoka -p 

ポート番号:3306 で動いていること。

接続できない場合、TCP WrapperやIP TABLESもチェックする。

 

データベースを指定してログインする方法:

$ mysql -h 192.168.1.12 データベース名  -u kataoka -p

 

外部ホストからポートを指定してログインする方法:

$ mysql -h 192.168.1.12 --port=3307 -u tanaka -p

ポート番号を3306以外に設定してあるMySQLサーバへ接続するときは、ポート番号も指定する。

 

MySQLのバージョンを合わせて接続する方法:

$ /usr/local/mysql5/bin/mysql -h 192.168.1.12 --port=3307 -u tanaka -p

MySQL4のクライアントからMySQL5のサーバ へはアクセスできなかった。

MySQL5に接続するときは、MySQL5のクライアントを利用して接続すること。

MySQL5のクライアントからMySQL4のサーバへは接続できた。

 

MySQLサーバが動いている同一マシン内でログインするとき:

$ mysql -h 192.168.1.12 -P 3307 -u tanaka -p

ERROR 1045 (28000): Access denied for user 'tanaka'@'dbserver' (using password: YES)

MySQLサーバが動いているマシンにsshでログインして、MySQLに接続しようとするとエラーが発生した場合は、ユーザ名@サーバ名 の形式でユーザ登録をする。

mysql> grant all privileges on データベース名.* to tanaka@'dbserver' identified by 'password';