繁体   English   中英

运行 python 和 mysql 并出现 docker 错误 - 无法连接

[英]running python and mysql with docker error - cannot connect

我正在使用 mysql-connector,当我使用 docker 运行容器时,我收到此错误:

mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'db:3306' (-5 No address associated with hostname)

但是当我使用 python 运行项目时,它只执行没有错误

我只想将 phpmyadmin 用于数据库,请帮助。

要从 linux 机器创建 docker:

docker pull mysql:latest

要运行它并在 3306(mysql 的标准端口)上安装具有端口访问权限的持久文件夹:

docker run --name=mysql_dockerdb --env="MYSQL_ROOT_PASSWORD=<your_password>" -p 3306:3306 -v /home/ubuntu/sql_db/<your_dbasename>:/var/lib/mysql -d mysql:latest

要连接到 docker 实例,以便您可以在 docker 中创建数据库:

docker exec -it mysql_dockerdb mysql -uroot -p<your_password>

我的SQL代码建立数据库:

CREATE DATABASE dockerdb;
CREATE USER 'newuser'@'%' IDENTIFIED BY 'newpassword';
GRANT ALL PRIVILEGES ON dockerdb.* to 'newuser'@'%';
ALTER USER 'username'@'%' IDENTIFIED WITH mysql_native_password BY 'userpassword';

您现在将拥有一个与持久 SQL 数据库一起运行的 docker。 您可以从 Python 代码连接到它。 我正在运行 Flask mySql。 您需要将密码保存在环境变量中。 我使用的是 Mac,因此我的 ~/.bash_profile 包含:

export RDS_LOGIN="mysql+pymysql://<username>:<userpassword>@<dockerhost_ip>/dockerdb"

在 Python 内:

import os

SQLALCHEMY_DATABASE_URI = os.environ.get('RDS_LOGIN')

此时您应该能够以通常的 Python 方式进行连接。 请注意,我已经掩盖了任何安全方面的假设,这是在防火墙后面的本地。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM