MySQL社区服务器8.0.16-django.db.utils.OperationalError:(1045,“拒绝用户访问(使用密码:YES)”)

MySQL社区服务器8.0.16-django.db.utils.OperationalError:(1045,“拒绝用户访问(使用密码:YES)”),mysql,django,mysql-python,Mysql,Django,Mysql Python,我将Django2.2与Python3和MySQL8.0.16一起使用,以构建一个ETL引擎。我在Djangosettings.py文件中配置了MySQL实例的正确登录信息。我知道这些数据是正确的,因为我已经测试过它,可以从CLI手动登录到MySQL。我从Django连接到MySQL实例时遇到问题,错误日志中的'user'字段与我在MySQL实例上配置的任何用户都不匹配。事实上,错误日志中的'user'字段实际上是我公司发行的笔记本电脑上UNIX系统上的用户 我已经设置了一个用户,john,以访

我将Django2.2与Python3和MySQL8.0.16一起使用,以构建一个ETL引擎。我在Djangosettings.py文件中配置了MySQL实例的正确登录信息。我知道这些数据是正确的,因为我已经测试过它,可以从CLI手动登录到MySQL。我从Django连接到MySQL实例时遇到问题,错误日志中的'user'字段与我在MySQL实例上配置的任何用户都不匹配。事实上,错误日志中的'user'字段实际上是我公司发行的笔记本电脑上UNIX系统上的用户

我已经设置了一个用户,john,以访问以下表格:(注意:一旦我可以实际连接,我想使用production_选项卡)

我使用的是公司发行的Macbook,因此无法更改UNIX系统上的默认用户:

➜  project git:(master) ✗ dscl . list /Users | tail -5
my_corporate_username
root
我已尝试调查MySQL用户以进一步诊断问题,我的公司用户名似乎不是注册用户(这是预期的),我设置的用户名,john使用与我的设置显式匹配的密码注册。py文件:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| my_corporate_username           | XXXXXXXXXXX~OY7XYXYXHVSrQjUXYXYXYXXTbx/I.oXYXXYYkiCJ0XYXYXXo7yDLGI7 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             | *59A3E0XXXXXXXXXXXXXXXE093F493462XXXXXXXX                              | mysql_native_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'john',
        'PASSWORD': 'passwd',
        'PORT': '3306',
        'HOST': 'localhost',
    }
}
在我的settings.py文件中,我拥有正确的凭证,可以查询显示数据库首先,这让我非常困惑,为什么(i)我无法通过允许我通过CLI登录的正确登录凭据连接到MySQL,以及(ii)为什么我在运行python3 manage.py runserver时出现以下错误:

django.db.utils.OperationalError: (1045, "Access denied for user 'my_corporate_username'@'localhost' (using password: YES)")
我的设置.py文件:

mysql> SELECT user,authentication_string,plugin,host FROM mysql.user;
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| user             | authentication_string                                                  | plugin                | host      |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
| my_corporate_username           | XXXXXXXXXXX~OY7XYXYXHVSrQjUXYXYXYXXTbx/I.oXYXXYYkiCJ0XYXYXXo7yDLGI7 | caching_sha2_password | localhost |
| mysql.infoschema | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.session    | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| mysql.sys        | $A$005$THISISACOMBINATIONOFINVALIDSALTANDPASSWORDTHATMUSTNEVERBRBEUSED | caching_sha2_password | localhost |
| root             | *59A3E0XXXXXXXXXXXXXXXE093F493462XXXXXXXX                              | mysql_native_password | localhost |
+------------------+------------------------------------------------------------------------+-----------------------+-----------+
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'john',
        'PASSWORD': 'passwd',
        'PORT': '3306',
        'HOST': 'localhost',
    }
}

我倾向于认为,这些问题中的一些是通过数据库本身或某些配置文件中存在的一些不可靠的权限问题发生的?那只是我最好的猜测。谢谢你的帮助!干杯

NAME
应该是数据库的名称,而不是用户的名称

用户名是
USER
,但您没有该用户名

大概是这样的:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'MyDatabase',
        'USER': 'john',
        'PASSWORD': 'passwd',
        'PORT': '3306',
        'HOST': 'localhost',
    }
}

我也有这个问题。如果我硬编码密码,它可以正常工作。但当我尝试从.env文件加载密码时,它会抛出与您所述相同的错误:

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

作为旁注;我的密钥可以从同一个.env文件中加载。

显示您的设置以及如何获取设置会有很大帮助。@Hanny除了settings.py中的代码片段之外,我还能提供什么帮助呢?请让我知道:)