簡體   English   中英

嘗試連接到本地 mysql 數據庫時 docker 容器上的 Django 錯誤

[英]Django on docker container error when trying to connect to local mysql database

請幫我,

我有使用 docker-compose 在 docker 容器上運行的 django 應用程序,但是在嘗試連接到本地機器上的 mysql 數據庫時出現錯誤。

錯誤信息是這樣的: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

我的 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

我發現了 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"

這種方法對我有用,我希望這對所有人有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM