python - 是否可以与 MySQL docker 容器建立 pymysql 连接?
问题描述
我无法使用 pymysql 从 Mac OSX 上的容器外部连接到 MySQL 容器,尽管我能够使用 MySQL Workbench 连接到 docker MySQL。
我使用了以下 docker-compose.yaml:
version: '3'
services:
db:
image: mysql:latest
volumes:
- ./data/db:/var/lib/mysql
ports:
- 6603:3306
restart: always
environment:
MYSQL_ROOT_PASSWORD: password
MYSQL_USER: testuser
MYSQL_PASSWORD: password
而下面的pymysql
import pymysql
conn = pymysql.connect(
host='0.0.0.0',
port=6603,
user='testuser',
password='password',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor
)
并收到以下错误:
OperationalError: (1045, "Access denied for user 'testuser'@'172.18.0.1' (using password: NO)")
尝试以 root 身份登录时也是如此。
我尝试过:1)在许多排列中授予权限,还将 HOST 设置为 '%' 2)删除并重新创建已安装的卷
主要是我希望能够在开发过程中从交互式 shell 访问 MySQL 数据库。
任何指导都会很棒。谢谢。
解决方案
您应该使用 IP 地址 127.0.0.1,或 localhost,或您的外部 IP 地址,而不是 0.0.0.0。地址 0.0.0.0 是一个特殊的 IP 地址,只有在创建侦听套接字时才有意义,但对创建连接套接字没有意义。
推荐阅读
- vue.js - 如何通过 HTTPS 为 Vue 应用程序提供本地开发服务
- javascript - 为什么在promise的异步函数中有while循环时JS会停止执行主线程?
- javascript - 如何使用 jquery 访问全局对象中的 ajax 响应数据?
- python - Django Rest Framework - 每个实例的最新子
- java - 根据相同的Id对arraylist中的数据进行分组
- python - TPU 卡在 Google Colab 中
- reactjs - 当我将鼠标悬停在父级时,如何在 jss 中选择子元素
- python - 具有多个分隔符的python正则表达式
- excel - 为什么我会收到错误消息“运行时错误'91'”abd 我该如何解决这个问题?
- angular - 使用 NGRX 选择器时如何避免在页面刷新时获得“未定义的属性 X”