Python可以';t使用docker连接到mysql

Python可以';t使用docker连接到mysql,python,mysql,docker,Python,Mysql,Docker,我是docker的新手,现在我正试图在mac中使用mysql而不安装它,所以我想使用docker,但我一直遇到这个错误 sqlalchemy.exc.InterfaceError:(mysql.connector.errors.InterfaceError)2003:无法连接到“localhost:3306”上的mysql服务器(61连接被拒绝) 重现问题: 我拉了mysql/mysql服务器: docker pull mysql/mysql-server 在航站楼内: docker run

我是docker的新手,现在我正试图在mac中使用mysql而不安装它,所以我想使用docker,但我一直遇到这个错误

sqlalchemy.exc.InterfaceError:(mysql.connector.errors.InterfaceError)2003:无法连接到“localhost:3306”上的mysql服务器(61连接被拒绝)

重现问题:

我拉了mysql/mysql服务器:

docker pull mysql/mysql-server
在航站楼内:

docker run --name=mydb -d mysql/mysql-server
然后我把它的密码改成:123456

在code database.py中:

SQLALCHEMY_DATABASE_URL = 'mysql+mysqlconnector://mydb:123456@localhost:3306/authorize_info'
在这一步中,我将得到这个错误

sqlalchemy.exc.InterfaceError:(mysql.connector.errors.InterfaceError)2003:无法连接到“localhost:3306”上的mysql服务器(61连接被拒绝)

当我将“localhost”更改为“172.17.0.1”时,也出现了此错误


我错在哪里?如何纠正?请帮助我运行容器时,它不会自动将其端口映射到计算机上的端口。您需要使用
-p
选项告诉docker容器中的端口应该映射到本地机器上的哪个端口。如果您希望能够通过使用本地计算机上的端口3306访问容器中的端口3306,则应按如下方式启动容器

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

第一个数字是本地计算机上的端口,第二个数字是容器中的端口。

还有一件事。如果您的应用程序与数据库位于同一网络中,则可以指定要连接的容器的用户名。如果没有,您应该使用主机IP连接到数据库。

谢谢。我取得了一些进展,现在它显示了这个错误:sqlalchemy.exc.interfaceeerror:(mysql.connector.errors.interfaceeerror)2013:在查询过程中与mysql服务器失去了连接