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

vgu*_*anp 4 remote mysql azure virtual-machine

我有一台装有 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
Run Code Online (Sandbox Code Playgroud)

允许 tcp 连接。在/etc/mysql/my.cnf我添加的文件中bind-address = 168.63.178.87,这是 Azure 面板告诉我的“虚拟 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'@'%'                                                          |
+-------------------------------------------------------------------------------------------------------------------+
Run Code Online (Sandbox Code Playgroud)

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

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

(这是一个 Yii 框架应用程序,以防万一)。

我可以使用给定的 IP 地址和特定端口对虚拟机进行完全 SSH 访问。Azure 还告诉我“内部 IP 地址”,即10.78.28.85. 我曾尝试将 MySQL 服务器绑定到该地址并绑定到0.0.0.0,但没有成功。

我怀疑问题是为了访问服务器中的特定实例而进行的重定向,但我不知道如何解决。

vgu*_*anp 6

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

我已经使用3306端口创建了端点并重新启动了 mysql-serversudo restart mysql

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