连接数据库报错:Access denied for user ‘root‘@‘localhost‘ (using password:YES)
报错信息为:pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")错误原因一 :是 root帐户默认不开放远程访问权限,所以需要修改一下相关权限错误原因二:mysql服务没有启动手动启动mysql即可(这种错误,一般出现在django项目中)
一、报错信息及原因
报错信息为:pymysql.err.OperationalError: (1045, "Access denied for user 'root'@'localhost' (using password: YES)")
错误原因一 :是 root帐户默认不开放远程访问权限,所以需要修改一下相关权限
错误原因二:mysql服务没有启动 手动启动mysql即可(这种错误,一般出现在django项目中)
错误原因三:django项目settings.py文件中配置mysql数据库时,密码写错(配置正确的密码即可解决该问题)
二、解决方法
- 错误原因一的解决方法:
1.打开MySQL目录下的my-default.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。(WIN7默认安装,my.ini在C:\ProgramData\MySQL\MySQL Server 5.6)
2.重启MySQL服务。(一定要重启一次)
3.通过命令行进入MySQL的BIN目录,输入“mysql -u root -p”(不输入密码),回车即可进入数据库。(WIN7默认安装,BIN目录为:C:\Program Files\MySQL\MySQL Server 5.6\bin)
4.执行“use mysql;”,使用mysql数据库。
5.执行“update user set authentication_string=password("123456") where user="root";(修改root的密码)(查看表结构可知,show columns from user,在mysql5.7后,password字段被改成了authentication_string)
6. 打开MySQL目录下的my.ini文件,删除最后一行的“skip-grant-tables”,保存并关闭文件。
7. 重启MySQL服务。
8. 在命令行中输入“mysql -u root -p ”,输入密码:"123456"成功登录数据库。

- 错误原因二的解决方法:
如果是在django项目中,重启mysql还是报这样的错,
检查一下设置是否正确,如果你设置了多个数据库,程序默认使用的是 default属性绑定的数据库

错误原因三原因及解决:
定位问题
当出现Access denied for user 'root'@'localhost' (using password: YES)错误时,正如你所判断的,很可能是 Django 项目的settings.py文件中数据库配置部分的密码有误。在settings.py文件中,数据库配置通常类似于以下代码:

解决方法:
- 步骤一:确认 MySQL 密码
- 首先,你需要确定 MySQL 数据库中
root用户的正确密码。可以通过以下方式进行确认:- 直接登录 MySQL 数据库。在命令行中输入
mysql -u root -p,然后按回车键,此时会提示你输入密码。输入你认为可能的密码,如果登录成功,那么这个密码就是正确的。 - 如果你忘记了密码,可以通过一些安全的方式来重置密码。例如,在 MySQL 5.7 及以上版本,可以使用以下步骤:
- 停止 MySQL 服务。在 Linux 系统中,可以使用
service mysql stop命令(不同的系统和安装方式可能略有不同)。 - 以跳过权限验证的方式启动 MySQL 服务。在命令行中输入
mysqld_safe --skip - grant - tables &,这将使 MySQL 服务在不进行权限验证的情况下启动。 - 重新打开一个新的命令行窗口,登录 MySQL。此时可以直接输入
mysql命令登录,不需要密码。 - 在 MySQL 命令行中,使用
UPDATE mysql.user SET authentication_string = PASSWORD('new_password') WHERE User = 'root';命令来设置新的密码,将new_password替换为你想要设置的新密码。 - 刷新权限。使用
FLUSH PRIVILEGES;命令。 - 退出 MySQL,然后正常启动 MySQL 服务(即恢复之前的启动方式)。
- 停止 MySQL 服务。在 Linux 系统中,可以使用
- 直接登录 MySQL 数据库。在命令行中输入
- 首先,你需要确定 MySQL 数据库中
- 步骤二:修改 Django 项目中的数据库配置密码
- 打开 Django 项目的
settings.py文件,找到DATABASES配置部分。 - 将
PASSWORD字段的值修改为正确的 MySQL 密码。例如,如果正确密码是my_correct_password,则修改后的配置如下:
- 打开 Django 项目的

- 步骤三:重新启动 Django 项目
- 在修改完密码配置后,需要重新启动 Django 项目,使新的配置生效。可以根据你的开发环境和启动方式来重新启动项目。例如:
- 如果是在本地开发环境,使用
python manage.py runserver命令启动项目,可以先停止当前运行的项目(通常通过Ctrl + C组合键),然后重新运行python manage.py runserver。 - 如果是在生产环境中,使用 uWSGI 或 gunicorn 等服务器来部署 Django 项目,需要根据相应的部署方式来重新启动服务器,如重启 uWSGI 服务(
service uwsgi restart,不同系统和安装方式可能有所不同)。
- 如果是在本地开发环境,使用
- 在修改完密码配置后,需要重新启动 Django 项目,使新的配置生效。可以根据你的开发环境和启动方式来重新启动项目。例如:
经过以上步骤,应该可以解决由于密码错误导致的数据库连接问题。如果仍然出现问题,可能还需要检查 MySQL 服务器是否正常运行、网络连接是否正常、Django 项目的其他依赖是否正确安装等因素。
更多推荐
所有评论(0)