无法使用 Mac OS X 中的 MySQL Workbench 连接到远程 MySQL 服务器上的端口 3306

无法使用 Mac OS X 中的 MySQL Workbench 连接到远程 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并且必须学习如何netstat在 Mac 上使用,而且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

要在 MySQL 中启用网络,您需要确保正确处理两件事: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';

但是当我授予这样的权限时,命令,其结构如下:

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服务器以使新的设置生效。

后记。

现在,您拥有的 MySQLGRANT命令使用 IP 地址,192.168.0.16但所有pingtelnet测试都是针对的192.168.0.21。那么它是哪个 IP 地址?当您在 MySQL 中设置授权时,您基于客户IP 地址;不是服务器 IP 地址。

因此,如果服务器有 IP 地址192.168.0.16,客户端也有 IP 地址192.168.0.21,那么 MySQLGRANT命令应该使用192.168.0.21不是正如192.168.0.16您的示例所示。也许这就是问题所在?

相关内容