Можно ли установить соединение pymysql с док-контейнером MySQL?

У меня возникли проблемы с подключением к контейнеру MySQL с помощью pymysql из-за пределов контейнера в Mac OSX, хотя я могу подключиться к докеру MySQL с помощью MySQL Workbench.

Я использовал следующий 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) Удаление и воссоздание смонтированного тома

В основном я хочу иметь доступ к базе данных MySQL из интерактивной оболочки во время разработки.

Любое руководство было бы здорово. Спасибо.


person Mitchell    schedule 16.06.2018    source источник
comment
Похоже, вы не указали пароль при попытке подключения из Python.   -  person Barmar    schedule 16.06.2018


Ответы (1)


Вы должны использовать IP-адрес 127.0.0.1, или локальный хост, или ваш внешний IP-адрес вместо 0.0.0.0. Адрес 0.0.0.0 — это специальный IP-адрес, который имеет смысл только при создании прослушивающий сокет, но нет смысла создавать соединительный сокет.

person Lie Ryan    schedule 16.06.2018
comment
И как он получил ответ от сервера? Попробуйте 0.0.0.0 на сервисе, который его слушает, и удивитесь! - person Klaus D.; 16.06.2018
comment
У меня нет проблем с подключением к контейнеру Docker через MySQL Workbench с 0.0.0.0:6603, будь то root или testuser, поэтому, похоже, это правильная информация. - person Mitchell; 16.06.2018