如何连接到运行在虚拟机上的MySQL服务器

14

我在Ubuntu 12.04上运行MySQL Server 5.5.32,Ubuntu是在虚拟机上运行的。主机平台是Windows 7。如何从Windows连接到Ubuntu上的MySQL?

到目前为止,我已经完成了以下工作:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

运行show grant for root;会显示如下内容:

+-------------------------------------------------------------+
| Grants for root@%                                           |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+

当我尝试从运行在Windows上的SQLYog连接到这个服务器时,我遇到了一个错误Error 2003 Cannot connect to mysql server on '192.168.xxx.xxx'

IP被提供给SQLYog,我是通过ifconfig得到的。提供了inet addr。

inet addr:192.168.226.xxx  Bcast:192.168.226.yyy

地址是否被错误使用,还是出现了授权问题?请给予建议。


你能从主机操作系统ping通你的虚拟机吗? - Arkadiusz 'flies' Rzadkowolski
@fliespl 噢...不行...我做不到。你有什么建议可以让我实现它吗? - Mono Jamoon
请先尝试我的答案(更改mysql的bind-address)。 - Arkadiusz 'flies' Rzadkowolski
@flispl将绑定地址更改为0.0.0.0,但仍无法连接。 - Mono Jamoon
你确定主机和虚拟机彼此可见,并且正在使用正确的端口吗?你检查过防火墙是否阻止了3306端口吗? - Arkadiusz 'flies' Rzadkowolski
5个回答

20
你的问题可能是你的 MySQL 绑定到了 127.0.0.1 而不是 0.0.0.0
你应该在 /etc/mysql/my.cnf 中将绑定地址改为 0.0.0.0,例如: bind-address = 0.0.0.0 然后当然要重新启动 MySQL。

有人可以解释一下为什么这个方法可以解决问题吗? - Zoltán Tamási
3
将绑定到127.0.0.1只允许来自本地主机的连接,而0.0.0.0则允许来自“任何主机”的连接。 - Arkadiusz 'flies' Rzadkowolski
3
我在使用 Ubuntu 版本为 5.6.31 的 MySQL 中,自己不得不去 /etc/mysql/mysql.conf.d/ 目录下进行搜索。 - ZbyszekKr
2
这基本上是错误的建议,因为它现在允许任何IP连接到您的MySQL实例,而不是将其锁定到您知道的IP。 - tread
我能够使用这种方法连接。谢谢! - smthakur19
显示剩余2条评论

4
在MySQL的新版本中,默认情况下不再使用skip-networking,而是仅在本地侦听。绑定地址= 127.0.0.1
因此,如果您不担心安全问题,可以将您的计算机IP添加到此处或简单地将其注释掉。

1

错误信息Error No. 2003: Can't connect to MySQL server on 'localhost' (or some other host)

简单地意味着无法连接到MySQL服务器,可能是以下原因之一:

  • 指定的主机上没有运行MySQL服务器

  • 使用TCP-IP不允许连接到MySQL服务器。检查MySQL配置文件(在Windows上为my.ini,在Unix / Linux上为my.cnf)中的'skip-networking'设置。它应该像“#skip-networking”一样被注释掉。如果它没有被注释掉,则注释掉并重新启动MySQL服务器以使更改生效。SQLyog需要使用TCP-IP进行连接。

  • 某些网络问题阻止了连接。这可能是网络配置错误或防火墙问题。我们有时发现,即使声称已禁用,某些防火墙也会阻止TCP-IP连接。通常卸载并重新安装防火墙将有所帮助。

  • 尝试连接ISP上的MySQL服务器时,此错误消息经常表示已阻止直接连接MySQL。然后必须使用HTTP隧道或SSH隧道进行连接。


1
我认为问题出在您的VM设置中的网络适配器设置上。
在您的VM设置中进行以下操作:
VM设置 -> 网络适配器设置 -> 选择桥接
当网络连接处于桥接模式时,VM将连接到物理网络。
在将网络连接更改为桥接后,请尝试在Windows机器上ping VM主机。
如果VM在Windows机器上ping通,则可以正常工作。

0

错误编号2003:无法连接到'192.168.x.x'上的MySQL服务器

简单地说,这意味着由于以下原因之一(或类似原因),连接不可能:

  • 在指定的主机上没有运行MySQL服务器

  • 使用TCP-IP不允许连接到MySQL服务器。检查MySQL配置文件中的'skip-networking'设置(Windows上的my.ini,Unix/Linux上的my.cnf)。它应该像'#skip-networking'一样被注释掉。如果它没有被注释掉,请注释掉并重新启动MySQL服务器以使更改生效。SQLyog需要使用TCP-IP连接。

  • 确保您能够使用telnet连接到MySQL端口

    C:\telnet hostname/IP_address port


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接