Django链接Mysql 8.0 出现错误(1045:Access denied for user 'root'@'localhost' (using password: NO) 的一种解决方法

本文介绍了在Django 2.0环境下,尝试连接MySQL 8.0.11数据库时遇到的1045错误,即'Access denied for user 'root'@'localhost' (using password: NO)'。错误通常被认为是由用户名或密码不正确引起的。然而,即使用户名和密码正确,由于MySQL 8.0中密码加密方式的变化,Django可能无法正确解析。解决方案是通过SQL命令ALTER USER更改用户'root'的密码加密方式为mysql_native_password。执行此命令并更新Django settings.py中的密码后,数据库连接成功。
摘要由CSDN通过智能技术生成

这两天自己在鼓捣 Django 链接 Mysql 数据库 的时候出现了一个错误,试了几天也没有一个比较好的解决方法。

今天偶然之下 解决了这个错误,把解决过程分享一下,  顺便看看有没有大牛指点一下原因。

运行环境: Django版本2.0 ; Mysql 版本 8.0.11;

错误代码:  django.db.utils.OperationalError: (1045:Access denied for user 'root'@'localhost' (using password: NO)

这个错误看网上的说法基本都是由于 数据库的 用户名密码 不正确导致的 ,下面是我在Django Setting.py

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
ERROR 1045 (28000): Access denied for user 'django'@'localhost' (using password: YES) 是MySQL数据库的错误提示,表示用户 'django' 在本地主机上使用密码登录时被拒绝访问。 解决这个问题的方法有以下几种: 1. 确保用户名和密码正确:首先,确认你输入的用户名和密码是正确的。检查是否有拼写错误或者大小写错误。 2. 检查用户权限:确保用户 'django' 有足够的权限来访问数据库。可以使用以下命令检查用户的权限: ```shell SHOW GRANTS FOR 'django'@'localhost'; ``` 如果用户没有足够的权限,可以使用以下命令为用户授予权限: ```shell GRANT ALL PRIVILEGES ON database_name.* TO 'django'@'localhost'; ``` 其中,'database_name' 是你要访问的数据库的名称。 3. 检查主机访问权限:如果你使用的是远程主机连接数据库,确保数据库服务器允许远程主机访问。可以使用以下命令检查主机访问权限: ```shell SELECT host FROM mysql.user WHERE user = 'django'; ``` 如果结果中没有包含你的远程主机的IP地址或域名,可以使用以下命令为用户添加主机访问权限: ```shell GRANT ALL PRIVILEGES ON database_name.* TO 'django'@'your_remote_host'; ``` 其中,'database_name' 是你要访问的数据库的名称,'your_remote_host' 是你的远程主机的IP地址或域名。 4. 检查密码加密方式:如果你的MySQL服务器使用了加密方式来存储密码,确保你的应用程序也使用相同的加密方式来验证密码。可以使用以下命令查看密码加密方式: ```shell SELECT user, host, plugin FROM mysql.user WHERE user = 'django'; ``` 确保你的应用程序使用相同的加密方式来验证密码。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值