我正在使用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的数据库,请帮助。
发布于 2020-12-27 19:29:59
要从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方式进行连接。请注意,我已经忽略了任何安全方面的假设,这是在防火墙后的本地。
https://stackoverflow.com/questions/65460405
复制相似问题