尝试连接到本地mysql数据库时,docker容器上的Django错误

时间:2019-12-05 04:06:29

标签: mysql django docker docker-compose

请帮助我

我有使用docker-compose在docker容器上运行的django应用程序,但是尝试连接到本地计算机上的mysql数据库时出现错误。

错误消息是这样的:无法通过套接字“ /var/run/mysqld/mysqld.sock”连接到本地MySQL服务器

我的docker-compose.yml文件是这样的:

 version: '3'

 services:
   web:
     container_name: web
     build: .
     command: python manage.py runserver 0.0.0.0:8000
     volumes:
       - .:/code
     ports:
       - "8000:8000"

我的Dockerfile是这样的:

FROM python:3

ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY . /code/
RUN apt-get update
RUN apt-get install python3-dev default-libmysqlclient-dev -y
RUN pip install pip -U
RUN pip install -r requirements.txt

1 个答案:

答案 0 :(得分:0)

我发现Django容器必须如何访问在主机上运行的MySQL数据库

  1. 如果您在Windows上运行,请确保您的网络配置文件位于Private mode中。
  2. 像这样创建一个新的Mysql用户:

    mysql > CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
    mysql > GRANT ALL PRIVILEGES ON . TO 'monty'@'localhost'WITH GRANT OPTION;
    mysql > CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
    mysql > GRANT ALL PRIVILEGES ON . TO 'monty'@'%' WITH GRANT OPTION;

    根据需要用用户名替换'monty'
    'localhost'替换为您的主机IP地址,例如192.168.1.50
    根据需要将'some_pass'替换为密码。

  3. 在Django settings.py文件中,数据库设置如下:

    数据库= {

    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'monitoring',  # your database name
        'USER': 'user1',  # username that you just create above
        'PASSWORD': 'root',  # user password that you just create above
        'HOST': '192.168.1.50',   #your host IP Address where your mysql database run
        'PORT': '3306',
    }}
    
  4. 将my.cnf文件上的bind-address = "127.0.0.1"替换为bind-address = "0.0.0.0"

此方法对我有用,我希望对所有人都适用。