首页 > 解决方案 > Django 总是尝试使用 root 用户连接到 Mysql

问题描述

我创建了一个 Dockerfile 来为 django 项目构建一个 docker 映像:

FROM python:3.6

RUN apt-get update \
    && apt-get install -y --no-install-recommends \
        postgresql-client \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /usr/src/app

COPY requirements.txt ./

RUN pip install -r requirements.txt

COPY shop /usr/src/app


RUN python manage.py migrate


EXPOSE 8000

CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]

在我的 settings.py 我有这个:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django',
        'USER ': 'admin',
        'HOST': 'mydatabase.eu-west-3.rds.amazonaws.com',
        'PASSWORD': 'adminadmin',
        'PORT': '3306',
    }
}

现在在构建图像时我遇到了这个错误:

**

django.db.utils.OperationalError: (1045, "Access denied for user 'root'@'172.31.7.119' (using password: YES)")

**

不明白的是为什么在我的 settings.py 中谈论用户“root”的错误被明确设置为“admin”?

标签: django

解决方案


正如@Willem Van Onsem提到的。删除 'USER' 键中的尾随空格。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'django',
        'USER': 'admin',
        'HOST': 'xxx.com',
        'PASSWORD': 'xxx',
        'PORT': '3306',
    }
}

注意:请勿共享您的数据库凭据。


推荐阅读