如何在 Azure 中连接到 linux 虚拟机上的 mysql 服务器 运行

how to connect to a mysql server running on a linux virtual machine in azure

我搜索了很多但无法解决该问题。 我可以在不同的 windows 机器上访问 MySQL 服务器 运行。我采取的步骤是

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

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

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

    但是为此我在输入密码 ERROR 2003 (HY000) 后收到以下错误:无法连接到 'linux server ip' 上的 MySQL 服务器 (10060) 当通过以下连接字符串 <add name="MySqlConnection" connectionString="Server=LINUX_VM_SERVER_IP;Database=database;Uid=user;Pwd=password" providerName="MySql.Data.MySqlClient" /> 从 c# 连接时 我收到 错误:无法找到并指定 mysql 主机

  5. 我已经在LINUX_VM中检查到0.0.0.0:3306处于监听状态。

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

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

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

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