首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根:(1045:拒绝用户‘django.db.utils.OperationalError’@‘localhost’的访问(使用密码: NO)

问根:(1045:拒绝用户‘django.db.utils.OperationalError’@‘localhost’的访问(使用密码: NO)
EN

Stack Overflow用户
提问于 2018-06-02 08:53:06
回答 7查看 9.1K关注 0票数 2

我在mac上安装了mysql8.0,并更改了默认的超级用户密码后,在运行python3 manage.py migrate连接Mysql和init数据库表时,我得到了错误django.db.utils.OperationalError: (1045:Access denied for user 'root'@'localhost' (using password: NO),而我可以在控制台中使用超级用户/新密码登录MySql,没有任何错误。

  • MySql version: 8.0 <--此问题的关键实际上在于
  • 操作系统: macOS 10.13.4
  • Python: 3.6
  • Django: 1.10.3

它使用的是pymysql和Mysql,我在google和stackorverflow中做了很多工作,最后我找到了解决方案in a CSDN tech blog

只是想在stackoverflow中分享它,如果你也遇到了这个问题,你可能想尝试下面答案中的方法。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2018-06-02 09:04:51

在mysql控制台运行以下命令,将Mysql的密码加密方式改为旧版本(mysql8.0改为使用cha2 )

代码语言:javascript
复制
mysql -u root -p
use mysql;
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'newpassword';  
FLUSH PRIVILEGES;

然后你就可以自由地运行python manage.py migrate了。

票数 4
EN

Stack Overflow用户

发布于 2020-10-01 11:07:08

在我的例子中,当我像这样用大写字母键入每个键时,它就会起作用

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'myproj',
        'USER': 'root',
        'PASSWORD': 'password',
        'PORT': '3306',
        'HOST': 'localhost',
 }
   }

希望它至少能帮助像我这样的菜鸟。

票数 1
EN

Stack Overflow用户

发布于 2018-10-10 15:52:31

manage.py应该从settings.py获取数据库访问凭证,这是一个特定的数据库用户(当然还有该用户的密码)。通过授予本地用户数据库登录权限来响应此错误消息将是一个安全错误,天哪,请不要这样做!

更确切地说,问题是:为什么Django没有从settings.py那里拿到证书?在我的例子中,settings.py出现了问题(我们正在将构建管道从django pipeline重构到webpack),我需要从我的settings.py中删除与管道相关的部分以进行修复。这是一个问题,为什么我没有得到任何关于settings.py问题的python错误消息,而是我得到了这个错误,它不是真正的问题所在。该错误消息只是源问题的传递结果。一旦我修复了manage.py,凭据就像往常一样从数据库设置中提取出来了,一切都很顺利。

因此,解决方案是检查和调试settings.py,这有点困难,因为我没有得到关于直接错误的消息。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50652587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档