首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >运行python和mysql时出现docker错误-无法连接

问运行python和mysql时出现docker错误-无法连接
EN

Stack Overflow用户
提问于 2020-12-27 04:25:38
回答 1查看 185关注 0票数 0

我正在使用mysql-connector,每当我使用docker运行容器时,我都会收到这样的错误:

代码语言:javascript
复制
mysql.connector.errors.InterfaceError: 2003: Can't connect to MySQL server on 'db:3306' (-5 No address associated with hostname)

但是,当我仅使用python运行项目时,它执行时没有任何错误。

我只想使用phpmyadmin的数据库,请帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-27 19:29:59

要从linux计算机创建docker,请执行以下操作:

代码语言:javascript
复制
docker pull mysql:latest

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

代码语言:javascript
复制
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中创建数据库:

代码语言:javascript
复制
docker exec -it mysql_dockerdb mysql -uroot -p<your_password>

我用于建立数据库的SQL代码:

代码语言:javascript
复制
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包含:

代码语言:javascript
复制
export RDS_LOGIN="mysql+pymysql://<username>:<userpassword>@<dockerhost_ip>/dockerdb"

在Python中:

代码语言:javascript
复制
import os

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65460405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档