运行 python 和 mysql 出现 docker 错误 - 无法连接
running python and mysql with docker error - cannot connect
我正在使用 mysql-连接器,每当我 运行 容器使用 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';
您现在将拥有一个 docker 运行 持久性 SQL 数据库。您从 Python 代码连接到它。我是 运行ning 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 方式进行连接。请注意,我假设这是在防火墙后面的本地,因此我忽略了任何安全方面的问题。
我正在使用 mysql-连接器,每当我 运行 容器使用 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';
您现在将拥有一个 docker 运行 持久性 SQL 数据库。您从 Python 代码连接到它。我是 运行ning 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 方式进行连接。请注意,我假设这是在防火墙后面的本地,因此我忽略了任何安全方面的问题。