【问题标题】:How to connect to a MySQL server running on a Virtual Machine如何连接到在虚拟机上运行的 MySQL 服务器
【发布时间】:2013-06-02 00:10:22
【问题描述】:

我有一个 MySQL 服务器 5.5.32 在 Ubuntu 12.04 上运行。 Ubuntu 正在 VM 上运行。主机平台是 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'

提供给 SQLYog 的 IP,我从 ifconfig 获得。提供了 inet 地址。

inet addr:192.168.226.xxx  Bcast:192.168.226.yyy

使用的地址不正确还是这些授权问题?请指教。

【问题讨论】:

  • 你能从主机操作系统 ping 你的虚拟机吗?
  • @fliespl 哎呀......不......我不能。关于如何实现它的任何建议?
  • 请先试试我的答案(更改mysql的绑定地址)。
  • @flispl 将绑定地址更改为 0.0.0.0 但仍然无法连接
  • 您确定主机和虚拟机对彼此可见并且您使用的是正确的端口吗?您是否检查过您的防火墙是否没有阻止端口 3306?

标签: mysql virtual-machine


【解决方案1】:

您的问题是(可能)您的 mysql 绑定到 127.0.0.1 而不是 0.0.0.0

您应该将/etc/mysql/my.cnf 中的绑定更改为0.0.0.0

bind-address = 0.0.0.0

然后当然是重启mysql。

【讨论】:

  • 谁能解释一下为什么这可以解决问题?
  • 绑定到 127.0.0.1 只允许来自本地主机的连接,而 0.0.0.0 允许来自“任何主机”的连接。
  • 我自己必须在 Ubuntu 上使用 5.6.31 版本在 /etc/mysql/mysql.conf.d/ 中搜索它。
  • 你也可以只注释掉绑定地址行
  • 这几乎是个坏建议,因为它现在允许任何 ip 连接到您的 mysql 实例/而不是将其锁定到您知道的 ip。
【解决方案2】:

在较新版本的 MySQL 中,现在默认只在 localhost 上侦听,而不是跳过网络 绑定地址 = 127.0.0.1

因此,如果您不担心安全问题,您需要将您的机器 IP 添加到此处,或者只需将其注释掉。

【讨论】:

    【解决方案3】:

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

    仅表示由于以下(或类似)原因之一而无法连接:

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

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

    • 某些网络问题阻止连接。这可能是网络配置错误或防火墙问题。我们有时会遇到一些防火墙会阻止 TCP-IP 连接,即使它声称已禁用。大多数情况下,卸载并重新安装防火墙会有所帮助。

    • 当尝试连接到 ISP 的 MySQL 服务器时,此错误消息通常表明与 MySQL 的直接连接已被阻止。然后,您必须使用 HTTP 隧道或 SSH 隧道进行连接。

    【讨论】:

      【解决方案4】:

      我认为问题出在虚拟机设置中的网络适配器设置

      在你的虚拟机设置中这样做。

      VM 设置 -> 网络适配器设置 -> 选择桥接

      当网络连接处于桥接模式时,VM 将连接到物理网络。

      将网络连接更改为桥接后,尝试 ping Windows 机器中的 VM 主机。

      如果虚拟机在你的 windows 机器上 ping,那么它会工作。

      【讨论】:

        【解决方案5】:

        错误号 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 主机名/IP_address 端口

        【讨论】:

          猜你喜欢
          • 2017-03-20
          • 1970-01-01
          • 1970-01-01
          • 2017-08-06
          • 2018-01-10
          • 2021-02-13
          • 2015-02-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多