我在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
在Ubuntu 18.04的Azure VM上创建一个运行MySQL的容器。您可以按照以下步骤操作。最后,你将连接到它。
第一。
在其中创建运行MySQL的容器,并在此处执行命令:
docker run --name=mysql -d -p 3306:3306 mysql/mysql-server:latest
完成后,您可以使用该命令查看root用户的密码:
docker logs mysql
然后使用命令连接mysql:
docker exec -it mysql mysql -uroot -p
并更改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
现在,您可以使用新密码退出并使用root用户来连接mysql。
第二。
创建一个远程连接MySQL的用户,你可以按照我回答的另一个case。
第三。
创建规则以允许Azure门户上的端口3306的流量。
它适用于我的网站,希望这对您有所帮助。
更新
您可以在此处添加网络安全组规则,如屏幕截图所示:
建议使用Workbench的SSH tunnel feature,然后您不需要远程访问数据库。
如果使用默认值创建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
希望能帮助到你。
问候,