web-dev-qa-db-ja.com

Mac OSXでMySQLWorkbenchを使用してリモートMySQLサーバーのポート3306に接続できません

MySQLにリモートでアクセスしたい:

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

Workbenchが接続に失敗したとき、私はpingとtelnetを調べました。

Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ ping 192.168.0.21
PING 192.168.0.21 (192.168.0.21): 56 data bytes
64 bytes from 192.168.0.21: icmp_seq=0 ttl=64 time=0.274 ms
64 bytes from 192.168.0.21: icmp_seq=1 ttl=64 time=0.499 ms
^C
--- 192.168.0.21 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.274/0.387/0.499/0.113 ms
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 
Brents-MacBook:~ thufir$ telnet 192.168.0.21 3306
Trying 192.168.0.21...
^C
Brents-MacBook:~ thufir$ 

私はcoreutilsをインストールしていて、Macでnetstatを使用する方法を学ぶ必要があります。lsof-明らかに違います。

arrakisサーバーはOpenSuSEを実行しています。ポートが閉じていますか?

注:MacにMySQLをインストールしていませんが、 エラーが発生します ...

-------------------------------------------------- - - - - - - - - - - - - - - 更新

MariaDB [mysql]> 
MariaDB [mysql]> GRANT ALL ON *.* TO `thufir`@'%' IDENTIFIED BY 'password';
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> flush privileges;
Query OK, 0 rows affected (0.00 sec)

MariaDB [mysql]> 
MariaDB [mysql]> select Host, user, grant_priv from user;
+------------+--------+------------+
| Host       | user   | grant_priv |
+------------+--------+------------+
| localhost  | root   | Y          |
| linux-k7qk | root   | Y          |
| 127.0.0.1  | root   | Y          |
| ::1        | root   | Y          |
| localhost  |        | N          |
| linux-k7qk |        | N          |
| %          | cron   | N          |
| localhost  | cron   | N          |
| localhost  | custom | N          |
| %          | custom | N          |
| %          | slave  | N          |
| %          | root   | N          |
| %          | thufir | N          |
+------------+--------+------------+
13 rows in set (0.00 sec)

MariaDB [mysql]> 
1
Thufir

MySQLでネットワークを有効にするには、2つのことが正しく処理されていることを確認する必要があります。MySQLの許可とMySQL自体でネットワークを有効にする必要があります。

MySQL付与の設定。

あなたのGRANTコマンドは私には奇妙に思えます:

GRANT ALL ON *.* TO thufir@'192.168.0.16' IDENTIFIED BY 'hfdks4329vjkl';

'192.168.0.16'が一重引用符で囲まれているのに、ユーザーがそうではないのはなぜですか? '192.168.0.16'は、ホストを一重引用符で囲んだリテラルとして表示される場合があります。したがって、次のようにしてみてください。

GRANT ALL ON *.* TO '[email protected]' IDENTIFIED BY 'hfdks4329vjkl';

しかし、このようなアクセス許可を付与すると、twoコマンドがあり、次のように構成されます。

GRANT USAGE ON *.* TO '[email protected]' IDENTIFIED BY 'thufir';
GRANT ALL PRIVILEGES ON *.* TO '[email protected]';

次に、付与を設定した後、特権テーブルをフラッシュして、ロードする新しい特権を取得する必要があります。

FLUSH PRIVILEGES;

そして、あなたは行ってもいいはずです。

MySQLネットワークを有効にします。

ただし、my.cnfを確認し、次のようなbind-address設定があるかどうかを確認してください。

bind-address = 127.0.0.1

これにより、MySQLはデフォルトでlocalhost(つまり、127.0.0.1)にバインドされ、データベースサーバーをネットワークに公開するとセキュリティリスクが発生する可能性があるため、MySQLの通常の「すぐに使用できる」セキュリティ動作になります。したがって、この場合、ネットワークを有効にする必要があるため、次のようにコメントアウトする必要があります。

#bind-address = 127.0.0.1

また、skip-networkingが無効になっていることを確認し、次のようにコメントアウトします。

#skip-networking

次に、MySQLサーバーを再起動して、新しい設定を有効にします。

追記。

とはいえ、MySQL GRANTコマンドはIPアドレス192.168.0.16を使用しますが、pingおよびtelnetテストはすべて192.168.0.21用です。 。では、どのIPアドレスですか? MySQLで許可を設定するときは、clientIPアドレスに基づいて設定します。サーバーのIPアドレスではありません。

したがって、サーバーのIPアドレスが192.168.0.16で、クライアントのIPアドレスが192.168.0.21の場合、MySQL GRANTコマンドは192.168.0.21およびnot例が示すように、192.168.0.16。多分それが問題ですか?

2
JakeGould