我在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
答案 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
然后使用命令连接mysql:
docker exec -it mysql mysql -uroot -p
并更改密码:
ALTER USER 'root'@'localhost' IDENTIFIED BY 'newpassword';
现在,您可以退出并使用具有新密码的root用户来连接mysql。
第二
创建一个用户以远程连接MySQL,您可以遵循另一个我回答的case。
第三。
创建规则以允许Azure门户上的端口3306进行通信。
它在我的网站上有效,希望对您有所帮助。
更新
您可以在此处添加网络安全组规则,如屏幕截图所示:
答案 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
希望有帮助。
关于