gpt4 book ai didi

mysql - Django-MySQL : 1045 Access Denied for 'user' @'localhost'

转载 作者:行者123 更新时间:2023-11-29 18:12:37 24 4
gpt4 key购买 nike

我有一个使用 MySQL 数据库的 Django 应用程序。我创建了一个数据库 foo,然后创建了一个新用户 foo_user,并将 foo.* 的所有权限授予 foo_user ,并刷新权限。

我可以使用 foo_userSHOW GRANTS; 从命令行登录,这给了我这个:

+-----------------------------------------------------------+
| Grants for foo_user@localhost |
+-----------------------------------------------------------+
| GRANT USAGE ON *.* TO 'foo_user'@'localhost' |
| GRANT ALL PRIVILEGES ON `foo`.* TO 'foo_user'@'localhost' |
+-----------------------------------------------------------+

我可以使用以下代码片段从 Python 进行连接:

import MySQLdb

try:
db = MySQLdb.connect('localhost', 'foo_user', 'verysecurepassword', 'foo')
cursor = db.cursor()
cursor.execute('SHOW GRANTS;')
results = cursor.fetchall()

for r in results:
print(r)
except MySQLdb.Error as e:
print(e)

这会按照预期打印 foo_user 的权限。

settings.py

db_pass = ''
db_pass_file = os.path.join(os.path.expanduser('~'), 'db.passwd')
with open(db_pass_file, 'r') as dbpf:
db_pass = dbpf.read()

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'foo',
'USER': 'foo_user',
'PASSWORD': db_pass,
'HOST': 'localhost',
'PORT': '3306',
},
}

但是,当我尝试 makemigrations 时,我得到了

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

我遵循了我能找到的每个SO答案的建议。我已经删除了数据库和用户,然后重新创建了它们几次。我找不到任何明显的错误,而且错误本身也没有多大帮助。我的问题是:如何从 MySQL 或 Django 中强制获取更多信息,以便找出问题所在?

预计:python 3.5.2、Django 1.11.7、mysql Ver 14.14 Distrib 5.7.20,在 EC2 实例上运行

最佳答案

问题是从文件中读取的密码末尾有一个额外的换行符。

解决方案是改变

db_pass = dbpf.read()

db_pass = dbpf.read().rstrip()

关于mysql - Django-MySQL : 1045 Access Denied for 'user' @'localhost' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47275916/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com