我正在使用 MySQL v8.0.35 以及 django 和 python。网站用于访问数据库,网站和数据库均托管在 AWS 上。当网站尝试以任何方式访问数据库时,它会抛出以下错误:
OperationalError: (1045, "Access denied for user '<user>'@'*****' (using password: NO)")
主要问题是我不明白为什么网站不使用密码,尽管它包含在我的 django settings.py 文件中的数据库配置中。
对我来说,这很奇怪,因为当通过 ssh 进入网站实例时,我能够运行以下命令:
mysqladmin -h <endpoint> -u <user> -p version
与上面相同,当提示我输入密码时,它执行得很好。
我还可以在 ssh 时运行此命令登录数据库:
mysql -h <endpoint> -u <user> -p
此时我输入相同的密码并被允许进入。 当我检查用户的权限时,它会显示以下内容
[
在 django 用于获取任何数据库信息的设置文件中,这就是我所拥有的:
DATABASES={
'default': {
'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
'NAME': 'zombeewatch', # Or path to database file if using sqlite3.
'USER': '<user>', # Not used with sqlite3.
'PASSWORD': '<password>', # Not used with sqlite3.
'HOST': '<endpoint>', # Set to empty string for localhost. Not used with sqlite3.
'PORT': '3306', # Set to empty string for default. Not used with sqlite3.
}
}
我也可以python manage.py
毫无问题地使用,因此该程序似乎能够从我的设置文件中获取数据库、用户名和密码。
老实说,我不知道从这里该去哪里。我认为主要问题在于为什么网站在提供密码的情况下尝试在没有密码的情况下登录数据库。我知道有几个问题存在同样的错误,但它们背后的上下文似乎非常不同。如果我可以提供更多信息,请告诉我!
**请注意,我已确认我在文件中使用的密码是正确的。至少,当提示输入 mysql 和 mysqladmin 命令的密码时,它与我复制和粘贴的内容相同。