代码之家  ›  专栏  ›  技术社区  ›  Ghassen

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

  •  -1
  • Ghassen  · 技术社区  · 6 年前

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

    3 回复  |  直到 6 年前
        1
  •  2
  •   Charles Xu    6 年前

    在ubuntu18.04的azurevm上创建一个运行MySQL的容器。您可以按照以下步骤操作。最后,你将连接到它。

    第一。

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

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

    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

        2
  •  0
  •   danblack    6 年前

    SSH tunnel feature 当然,您不需要使数据库可以远程访问。

        3
  •  0
  •   Ivan Contreras    6 年前

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

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

    之后,你应该检查Ubuntu防火墙。我认为默认情况下是上升的。

    试试这个:

    sudo ufw status
    

    然后这个:

    sudo ufw disable
    

    sudo ufw enable
    

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

    sudo ufw allow from any to any port 3306 proto tcp
    

    sudo ufw状态
    

    希望有帮助。

    当做,