首页 > 解决方案 > 是否可以与 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 数据库。

任何指导都会很棒。谢谢。

标签: pythonmysqldockerpymysqldocker-for-mac

解决方案


您应该使用 IP 地址 127.0.0.1,或 localhost,或您的外部 IP 地址,而不是 0.0.0.0。地址 0.0.0.0 是一个特殊的 IP 地址,只有在创建侦听套接字时才有意义,但对创建连接套接字没有意义。


推荐阅读