【问题标题】:mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)
【发布时间】:2019-12-29 17:46:16
【问题描述】:

我正在创建一个包含烧瓶应用程序和 mysql 的 docker 文件。现在应该在 localhost 上运行。

flask 应用程序正在运行,mysql 服务器也在运行。我能够连接到mysql服务器。该应用无法连接到数据库。

Python代码连接

def establish_connection():
    config = {
        'user': 'root',
        'password': 'root',
        'host': '127.0.0.1',
        'port': '3306',
        'database': 'persist'
    }

    cnx: str = mysql.connector.connect(**config)
    print(cnx)
    return cnx

Dockerfile

FROM python:3.7.4-buster
WORKDIR /stocksite
ENV FLASK_APP main.py
ENV FLASK_RUN_HOST 0.0.0.0
EXPOSE 5000 32000 3306
COPY . .
COPY requirements.txt requirements.txt
RUN pip install -r requirements.txt
COPY . .
CMD ["flask", "run"]

docker-compose.yml

version: '3'
services:
  web:
    build: .
    ports:
      - "5000:5000"

  db:
    image: mysql
    container_name: db
    ports:
      - "32000:3306"
    environment:
      MYSQL_ROOT_PASSWORD: root
    volumes:
      - ./data/db:/docker-entrypoint-initdb.d

我收到以下错误:

mysql.connector.errors.DatabaseError: 2003 (HY000): Can't connect to MySQL server on '127.0.0.1' (111)

【问题讨论】:

  • 您需要将“db”设置为数据库的主机名,因为它也在 docker 容器中运行。在这些情况下,container_name 充当主机名

标签: python mysql docker dockerfile mysql-python


【解决方案1】:

Docker compose 服务可用于使用其名称的其他服务。您的db 服务可以使用db:3306 从您的web 容器连接到

config = {
    'user': 'root',
    'password': 'root',
    'host': 'db',
    'port': '3306',
    'database': 'persist'
}

【讨论】:

    【解决方案2】:

    在 docker-compose 中,您将容器内 db 的端口 3306 映射到主机上的端口 32000

    在应用程序中,您应该使用端口 32000 而不是 3306

    def establish_connection():
    config = {
        'user': 'root',
        'password': 'root',
        'host': '127.0.0.1',
        'port': '32000',
        'database': 'persist'
    }
    
    cnx: str = mysql.connector.connect(**config)
    print(cnx)
    return cnx
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 2021-06-25
      • 2016-04-08
      • 2013-05-04
      • 2021-12-16
      • 1970-01-01
      • 2013-09-12
      相关资源
      最近更新 更多