无法从vm外部访问docker上运行的mysql示例

cyej8jka  于 2021-06-21  发布在  Mysql
关注(0)|答案(3)|浏览(452)

我在microsoftazure云上创建了一个vm(ubuntuserver18.04),安装了docker,运行的是mysql5.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)

我怀疑我的虚拟机不允许外部ip访问,但我不知道如何允许一些ip使用azure

8gsdolmq

8gsdolmq1#

建议使用workbench的ssh隧道特性,这样就不需要远程访问数据库。

gfttwv5a

gfttwv5a2#

在ubuntu18.04的azurevm上创建一个运行mysql的容器。您可以按照以下步骤操作。最后,你将连接到它。
第一。
创建包含运行mysql的容器,命令如下:

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

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

docker logs mysql

结果如下:

然后使用以下命令连接mysql:

docker exec -it mysql mysql -uroot -p

并更改密码:

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

现在您可以退出并使用root用户和新密码连接mysql。
第二。
创建一个远程连接mysql的用户,你可以按照我回答的另一个案例。
第三。
创建规则以允许azure门户上端口3306的流量。

它在我的网站上工作,希望这能帮助你。
更新
您可以在此处添加网络安全组规则,如屏幕截图所示:

lf3rwulv

lf3rwulv3#

如果您使用默认值创建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

希望有帮助。
当做,

相关问题