请帮助我
我有使用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
答案 0 :(得分:0)
我发现Django容器必须如何访问在主机上运行的MySQL数据库
Private mode
中。像这样创建一个新的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'
替换为密码。
在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',
}}
将my.cnf文件上的bind-address = "127.0.0.1"
替换为bind-address = "0.0.0.0"
此方法对我有用,我希望对所有人都适用。