无法连接到虚拟机中的 Azure mysql 服务器

无法连接到虚拟机中的 Azure mysql 服务器

我有一个装有 Ubuntu 系统的 Azure 虚拟机,其中装有 MySQL 服务器,我想从 Web 应用程序访问数据库。安装 mysql-server 后,我执行了

$ iptables -I INPUT -p tcp --dport 3306 -m state --state NEW,ESTABLISHED -j ACCEPT
$ iptables -I OUTPUT -p tcp --sport 3306 -m state --state ESTABLISHED -j ACCEPT

允许 tcp 连接。在文件中/etc/mysql/my.cnf我添加了bind-address = 168.63.178.87Azure 面板告诉我的“虚拟 IP 地址”。

在 mysql 中,我用来连接的用户对所需的数据库拥有所有权限(我认为):

mysql> SHOW GRANTS FOR 'user'@'%';
+-------------------------------------------------------------------------------------------------------------------+
| Grants for user@%                                                                                            |
+-------------------------------------------------------------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY PASSWORD 'pass_ommited' |
| GRANT ALL PRIVILEGES ON `database`.* TO 'user'@'%'                                                          |
+-------------------------------------------------------------------------------------------------------------------+

但是当应用程序尝试连接数据库时,我收到错误:

 CDbConnection failed to open the DB connection: SQLSTATE[HY000] [2003] Can't connect to MySQL server on '168.63.178.87' (4) 

(如果重要的话,它是一个 Yii 框架应用程序)。

我使用给定的 IP 地址和特定端口对虚拟机具有完全 SSH 访问权限。 Azure 还告诉我“内部 IP 地址”,即10.78.28.85。 我尝试将 MySQL 服务器绑定到该地址和0.0.0.0,但均未奏效。

我怀疑问题在于访问服务器中的特定实例时进行的重定向,但我不知道如何解决它。

答案1

我终于解决了。问题是我在 Azure 中没有端点。

我已经创建了带有端口的端点3306,并使用以下命令重新启动了 mysql-serversudo restart mysql

我犯的另一个错误是我需要将绑定地址设置为服务器的内部 IP 地址。

答案2

Endpoint 不够用!刚刚花了 4 个小时解决这个问题。您还需要验证您的服务器是否有针对 MySql 端口的防火墙规则,最重要的是,该规则是 PUBLIC:

如图所示

相关内容