如何从CLI或python脚本连接到docker容器中的myql
我想连接到Docker容器内的MySQL。我在docker容器中有一个正在运行的MySQL实例。因为我的主机上已经有3306个忙端口,所以我决定使用端口8081来启动MySQL容器。基本上,我是从docker run-p8080:80-p8081:3306--name test开始容器的。当我连接到我的容器时,我可以毫无错误地连接到我的MySQL。另一方面,我有一个web应用程序,可以从我的主机使用完全相同的端口(8081)连接到MySQL。这意味着MySQL工作正常,可以从外部访问。但是现在在我的python脚本中,我无法连接。我也无法使用CLI连接到MySQL。端口号似乎根本没有被解释。我看到,如果使用例如如何从CLI或python脚本连接到docker容器中的myql,python,mysql,Python,Mysql,我想连接到Docker容器内的MySQL。我在docker容器中有一个正在运行的MySQL实例。因为我的主机上已经有3306个忙端口,所以我决定使用端口8081来启动MySQL容器。基本上,我是从docker run-p8080:80-p8081:3306--name test开始容器的。当我连接到我的容器时,我可以毫无错误地连接到我的MySQL。另一方面,我有一个web应用程序,可以从我的主机使用完全相同的端口(8081)连接到MySQL。这意味着MySQL工作正常,可以从外部访问。但是现在在
mysql-p8081-uroot-P
。这只是尝试连接到主机MySQL(端口3306),而不是端口8081上的容器MySQL(当我输入主机MySQL凭据时,它连接到主机MySQL)。在我的python脚本中,我使用了以下内容:conn=MySQLdb.connect(主机='localhost',端口=8081,用户='root',passwd='')
。但这也不起作用。在MySQL手册页中,我看到以下内容:
· --port=port_num, -P port_num
The TCP/IP port number to use for the connection.
请问我做错了什么
mysql --version:
mysql Ver 14.14 Distrib 5.7.18, for Linux (x86_64) using EditLine wrapper
更新
这是我的docker ps:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
b370c91594d3 test "/bin/sh -c /start.sh" 14 hours ago Up 14 hours 8080/tcp, 0.0.0.0:8080->80/tcp, 0.0.0.0:8081->3306/tcp test
尝试将localhost更改为0.0.0.0(也可以尝试127.0.0.1)web应用是否也在容器中?你在什么平台上运行它?@Adam网络在同一个容器中,但我认为连接是从外部建立的。基本上,它是一个teampass()容器。我使用localhost作为地址。我在Ubuntu 16.04上。你可以从本地机器访问web应用程序,对吗?@Adam是的,但当我尝试使用
MySQL-u root--port=8081从CLI连接到MySQL时,我遇到以下问题:错误1045(28000):拒绝用户“root”@“localhost”的访问(使用密码:否)