首页 > 解决方案 > Ubuntu 上的 Docker MySQL 连接问题

问题描述

我很难连接到在 Ubuntu 上运行的 MySql 的 docker 容器实例。以下是创建 docker 的代码:

docker run --name=mysql_db --env="MYSQL_ROOT_PASSWORD=password" -p 3308:3308 -v /opt/permstorage:/var/lib/mysql -d mysql:latest

我一直在尝试诊断来自网络中另一台 Ubuntu 机器的访问,但我一直被拒绝连接。我可以使用下面的命令登录到 docker,所以我知道我的密码是正确的。

docker exec -it mysql_db mysql -uusername -p

我已经使用 AWS 服务器成功运行了完全相同的代码,但由于某种原因,它无法在我的网络中运行,我怀疑它与 IP 地址有关,但我无法诊断如何解决这个问题。

我已经在ufw中打开了3308端口。但即使在本地使用 dbeaver,我也无法访问 docker mysql 实例。我应该从哪里开始诊断?在下面添加附加信息:

(base) user@Alienware:~/Downloads$ telnet 127.0.0.1 3308
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
Connection closed by foreign host.
(base) user@Alienware:~/Downloads$ telnet 192.168.4.249 3308
Trying 192.168.4.249...
telnet: Unable to connect to remote host: Connection refused
(base) user@Alienware:~/Downloads$ telnet localhost 3308
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
(base) user@Alienware:~/Downloads$ sudo ufw status
[sudo] password for user: 
Status: active

To                         Action      From
--                         ------      ----
3389/tcp                   ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
3389                       ALLOW       Anywhere                  
3308                       ALLOW       Anywhere                  
3389/tcp (v6)              ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)             
3389 (v6)                  ALLOW       Anywhere (v6)             
3308 (v6)                  ALLOW       Anywhere (v6) 

标签: mysqldockerubuntu

解决方案


原来我的错也将内部端口映射到 3308。以下更正了我的问题:

docker run --name=mysql_db --env="MYSQL_ROOT_PASSWORD=password" -p 3308:3306 -v /opt/permstorage:/var/lib/mysql -d mysql:latest

推荐阅读