![](/img/trans.png)
[英]django running on local machine cannot connect to docker container running MYSQL
[英]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.