Win7 で VirtualBox 4.2.16 を実行しています。CentOS 6.4にMySQLサーバーがあります。Win7 から CentOS への Telnet は問題ありません。
mysql -u root -h 192.168.56.102 -p
CentOS で問題ありません。
これは私がユーザーテーブルに持っているものです:
mysql> select user, host from user;
+------+----------------+
| user | host |
+------+----------------+
| mm | 127.0.0.1 |
| root | 127.0.0.1 |
| mm | 192.168.56.102 |
| root | 192.168.56.102 |
| mm | localhost |
| root | localhost |
+------+----------------+
6 rows in set (0.00 sec)
MySQL status:
mysql Ver 14.14 Distrib 5.6.13, for Linux (x86_64) using EditLine wrapper
Connection id: 14
Current database:
Current user: root@loc
SSL: Not in use
Current pager: stdout
Using outfile: ''
Using delimiter: ;
Server version: 5.6.13-log MySQL Community Server (GPL)
Protocol version: 10
Connection: 192.168.56.102 via TCP/IP
/usr/my.cnf:
[mysqld]
log_bin
port = 3306
bind-address = 192.168.56.102
/etc/hosts:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.56.102 loc
それでも、192.168.56.102 ポート 3306 で Win7/HeidiSQL から root に接続しようとすると、
SQL エラー (1130)... ホスト '192.168.56.1' は、この MySQL サーバーへの接続を許可されていません。
CentOS ファイアウォールはダウンしていますが、私の知る限り、これはファイアウォールの問題ではありません... 何かアイデアはありますか?
いくつかの調査の後、この問題を解決しました。ユーザー テーブルには、ユーザーごとに 3 つのエントリがあります。ホスト %、ホスト localhost、ホスト 192.168.56.101
これは、コマンド GRANT ALL ON によって実現されます。TO root@'X' IDENTIFIED BY "pass" WITH GRANT OPTION;
ここで、X = %、localhost、192.168.56.101
このようにして、ゲスト MySQL サーバーはゲストと Win7 ホストの両方から接続できます。