![](/img/trans.png)
[英]Connection refused when trying to connect to local mysql database from docker container
[英]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 数据库,
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"
这种方法对我有用,我希望这对所有人有用。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.