【问题标题】:how to connect to a mysql server running on a linux virtual machine in azure如何连接到在 azure 的 linux 虚拟机上运行的 mysql 服务器
【发布时间】:2017-03-20 19:53:30
【问题描述】:

我搜索了很多但无法解决这个问题。 我能够访问在不同 Windows 机器上运行的 MySQL 服务器。我采取的步骤是

  1. 将 my.ini 文件绑定地址更改为 0.0.0.0
  2. GRANT ALL PRIVILEGES ON DATABASE.* TO user@'%' IDENTIFIED BY 'password';创建用户并授予权限
  3. 从命令行到windows MySQL服务器mysql -h windows server ip -u user -p

它工作正常,从 MySQL 工作台我可以从我的机器连接到 Windows MySQL 服务器。但是在 Linux 虚拟机中我做了同样的事情

  1. 更改 my.cnf 文件并将绑定地址更改为 0.0.0.0。
  2. GRANT ALL PRIVILEGES ON DATABASE.* TO user@'%' IDENTIFIED BY 'password';创建用户并授予权限
  3. 从命令行到 LINUX MySQL 服务器mysql -h linux server ip -u user -p

    但为此我在输入密码后出现以下错误 ERROR 2003 (HY000): Can't connect to MySQL server on 'linux server ip' (10060) 同样,当从 c# 连接时,请遵循以下操作连接字符串<add name="MySqlConnection" connectionString="Server=LINUX_VM_SERVER_IP;Database=database;Uid=user;Pwd=password" providerName="MySql.Data.MySqlClient" /> 我收到错误:无法找到并指定 mysql 主机

  4. 我已在 LINUX_VM 中检查 0.0.0.0:3306 处于侦听状态。

  5. 如果我尝试使用/>telnet LINUX_VM_IP 3306 远程登录 LINUX_VM MYSQL Server 服务,我得到 错误:连接到 LINUX_VM_IP...无法在端口 3306 上打开与主机的连接:

【问题讨论】:

  • 您是否尝试从 Azure 外部连接(例如您的本地计算机)?很难说清楚,因为你从来没有指定细节 - 只是很多配置和错误。
  • 如果您使用了默认的市场模板,那么您的网络安全组 (NSG) 将没有针对 MySQL 的入站规则,因此您需要添加该规则。跨度>
  • 我正在尝试从 azure 外部进行连接。来自我的本地机器 MySQL 工作台以及来自 c# Web API。虚拟机内的数据库连接正在使用 vm 中的本地托管应用程序进行工作和测试。但是这些是我在连接到 azure Linux VM 之外尝试并得到的错误。

标签: mysql linux azure mysql-workbench azure-virtual-machine


【解决方案1】:

首先,尝试连接到托管数据库的 VM 上的数据库。如果连接成功,那么数据库的配置是正确的。否则,请检查您的数据库配置。

其次,如果您能够连接到 VM 上的数据库,则此问题的最可能原因是防火墙。请检查本地防火墙(iptables)是否允许端口 3306 上的入站连接。出于测试目的,您可以暂时禁用防火墙。另外,请检查 NSG 是否已正确配置以允许端口 3306 上的入站流量。

此外,如果 VNET 已与 NSG 关联,那么我们也需要允许 NSG 中的入站流量。

【讨论】:

  • 感谢您的回复,我可以连接到 azure Linux VM 内的数据库。我会检查你告诉的那些配置,完成后我会通知你。
  • 好的。正如您所说,我们的团队讨论过这是可能的,但我们没有使用它,因为我们决定不从 vm 中披露数据库,谢谢。
猜你喜欢
  • 2013-06-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-19
  • 1970-01-01
  • 1970-01-01
  • 2017-08-06
  • 2018-01-10
相关资源
最近更新 更多