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

问题描述 投票:-1回答:3

我在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

mysql azure docker ip virtual-machine
3个回答
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


0
投票

建议使用Workbench的SSH tunnel feature,然后您不需要远程访问数据库。


0
投票

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

一旦您检查NSG具有正确的设置。我猜MySQL的默认端口是TCP 3306.如果规则不存在则添加它。

之后,你应该检查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

希望能帮助到你。

问候,

© www.soinside.com 2019 - 2024. All rights reserved.