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

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

我查了很多资料,但没能解决这个问题。 我能够访问在不同 Windows 机器上运行的 MySQL 服务器。我采取的步骤是

  1. 将 my.ini 文件绑定(bind)地址更改为 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 Workbench 我可以从我的机器连接 Windows MySQL 服务器。但是在 Linux 虚拟机中我也做了同样的事情

  1. 更改 my.cnf 文件并将绑定(bind)地址更改为 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)连接字符串<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 telnet LINUX_VM MYSQL Server 服务我收到错误:正在连接到 LINUX_VM_IP...无法在端口 3306 上打开与主机的连接:

最佳答案

首先,尝试连接到托管数据库的虚拟机上的数据库。如果连接成功,则说明数据库配置正确。否则,请检查您的数据库配置。

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

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

enter image description here

关于mysql - 如何连接到在azure中的linux虚拟机上运行的mysql服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40465726/

相关文章:

azure - 如何在列中存储 10000 个字符串,ADF 是在接收器中的数据流中读取它还是截断它

php - 如何使用 PHP 在单个页面中使用两个不同的查询创建两个分页?

php - MySQL 外键..困惑

c - 哪些组件使用语言环境变量?

c++ - linux 上的运算符 new 和 bad_alloc

azure - 如何通过私有(private) DNS 名称从虚拟网络中的应用服务访问 Azure VM?

mysql - 如果从另一台计算机单击按钮,如何禁用该按钮

mysql - 查询数据包过大 MySQL

c - 我怎样才能在pam中获取客户端ip

azure - 使用 Azure REST API 或 Azure 数据工厂从 Azure 时序见解导出数据