Microsoft Azure-无法从VM外部访问在Docker上运行的MySQL实例

时间:2018-09-15 22:46:47

标签: mysql azure docker ip virtual-machine

我在Microsoft Azure Cloud上创建了一个VM(Ubuntu Server 18.04),并在上面安装了Docker,并且正在运行MySQL 5.7容器。

问题是,当我尝试从VM外部连接到MySQL实例时(例如直接安装在计算机上的MySQL Workbench),我收到类似以下错误:

Your connection attempt failed for user 'root' from your host to server at my_ip_address:3306: Can't connect to MySQL server on 'my_ip_address' (60)

我怀疑我的VM不允许外部IP访问,但我不知道如何使用Azure允许某些IP

3 个答案:

答案 0 :(得分:2)

在Ubuntu 18.04的Azure VM上创建一个在其中运行MySQL的容器。您可以按照以下步骤操作。最后,您将连接到它。

首先。

在其中运行MySQL的容器及其命令中创建容器:

docker run --name=mysql -d -p 3306:3306 mysql/mysql-server:latest

完成后,可以使用命令查看root用户的密码:

docker logs mysql

结果将如下所示: enter image description here

然后使用命令连接mysql:

docker exec -it mysql mysql -uroot -p

并更改密码:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';

现在,您可以退出并使用具有新密码的root用户来连接mysql。

第二

创建一个用户以远程连接MySQL,您可以遵循另一个我回答的case

第三。

创建规则以允许Azure门户上的端口3306进行通信。

enter image description here

它在我的网站上有效,希望对您有所帮助。

更新

您可以在此处添加网络安全组规则,如屏幕截图所示:

enter image description here

答案 1 :(得分:0)

建议使用Workbench的SSH tunnel feature,这样就无需使您可以远程访问数据库。

答案 2 :(得分:0)

如果使用默认值创建了VM。您可以在“网络”部分检查防火墙规则。在那里,您应该看到入站和出站的允许流量。默认情况下,除非您在创建时更改该属性或在创建后对其进行编辑,否则azure上的VM具有关联的NSG(网络安全组)。

检查NSG的设置是否正确。我想MySQL的默认端口是TCP3306。如果不存在该规则,则添加它。

在那之后,您应该检查Ubuntu防火墙。我认为默认情况下启用。

尝试一下:

sudo ufw status

然后是:

sudo ufw disable

它将禁用防火墙,检查是否可以连接到MySQL实例。如果成功连接到它,则使用以下命令启用Ubuntu防火墙:

sudo ufw enable

并添加防火墙规则,以允许进入操作系统上TCP端口3306的传入流量:

sudo ufw allow from any to any port 3306 proto tcp

重新启动防火墙,并使用以下命令检查新规则是否处于活动状态:

sudo ufw status

希望有帮助。

关于