ERROR 1045: Access denied for user: 'root@localhost' (Using password: YES)

本文解决了MySQL中因权限问题导致的密码错误1045错误代码。通过修改root密码并添加权限授予语句,确保密码更改后仍能正常使用。
前两天也偶尔出现这个错误,也没在意,因为我重新修改一下mysql的root密码后又可以用了,但昨天却不行,我把root密码修改以后虽然当时能用, 一旦重新进入就都不能用了,可我的密码明明没有错啊?今天终于找到了原因,是权限问题,大家可以参考着下面两篇文章去看一下: 
http://topic.youkuaiyun.com/t/20060117/15/4521496.html# 
http://doc.99net.net/doc/database/1076488199/1076549732.html 
由于以前从来没有遇到过这种情况,故把解决方法记录于此,以便今后自己查阅,具体方法就是你在改root密码的时候再加上一句给权限的语句: 

grant all on mysql.* to 'root'@'localhost' identified by 'password'; 

最后那个password即是你要修改的root用户的密码 

刚开始用mysql就给我来了个下马威,前些天完整完数据库后安装手册修改了一下root用户的密码,然后用root用户再登陆是一切OK。可是今天再登陆时就报1045错误代码。 
错误代码  1045 

Access denied for user 'root'@'localhost' (using password:YES) 

我的解决办法是重新设置root用户密码,在Windows平台下操作步骤如下: 

1、以系统管理员身份登录到系统; 

2、如果MySQL服务器正在运行,停止它。 

如果是作为Windows服务运行的服务器,进入服务管理器:开始菜单->控制面板->管理工具->服务 

如果服务器不是作为服务而运行的,可能需要使用任务管理器来强制停止它。 

3、创建1个文本文件,并将下述命令置于单一行中: 

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('MyNewPassword'); 

用任意名称保存该文件。在本例中,该文件为C:\mysql-init.txt。 

4、进入DOS命令提示:开始菜单->运行-> cmd 

假定你已将MySQL安装到C:\mysql。如果你将MySQL安装到了另一位置,请对下述命令进行相应的调整。 

在DOS命令提示符下,执行命令: 

C:\mysql\bin\>mysqld-nt --init-file=C:\mysql-init.txt 

在服务器启动时,执行由“--init-file”选项(作用:在启动时从指定的文件中读取SQL命令)命名的文件的内容,更改根用户密码。当服务器成功启动后,应删除C:\mysql-init.txt。 

5、如果起动MySQL服务器出错,把进程mysqld-nt.exe关闭。然后重启它,OK。 

6、或者停止MySQL服务器,然后在正常模式下重启它。如果以服务方式运行服务器,应从Windows服务窗口启动它。如果以手动方式启动了服务器,能够像正常情形下一样使用命令。 

应能使用新密码进行连接
<think>嗯,用户遇到了MySQL的ERROR 1045错误,访问被拒。首先,我需要回忆一下这个错误的常见原因。通常,这个错误是由于密码错误、权限问题或者root用户配置不正确导致的。用户提到使用密码YES,说明他们尝试用密码登录但失败了。可能他们输入的密码不正确,或者MySQL服务没有正确识别root用户的权限。 接下来,我应该考虑解决方法。首先,检查密码是否正确。如果用户忘记密码,可能需要重置。这时候可能需要停止MySQL服务,然后以跳过权限检查的方式启动,这样可以不用密码登录进去修改root密码。例如,使用mysqld_safe --skip-grant-tables或者更新版的MySQL用--skip-grant-tables参数启动服务。 另外,用户可能使用的是XAMPP这样的集成环境,如引用[2]提到的,修改了root密码后,phpMyAdmin可能无法正确识别新密码,需要同时修改配置文件中的密码设置。比如,在XAMPP中,phpMyAdmin的config.inc.php文件里需要更新密码字段,否则即使MySQL接受了新密码,phpMyAdmin可能还是用旧密码尝试连接,导致访问被拒。 还有,用户可能存在主机名的问题。比如,root用户可能只允许从localhost访问,而用户可能尝试从其他主机连接,或者存在匿名用户冲突。这时候需要检查mysql.user表中的Host字段,确保root用户有正确的访问权限,并删除匿名账户。 然后,需要分步骤给出解决方案。首先建议用户验证密码是否正确,如果忘记密码则进入安全模式重置。然后处理配置文件,特别是使用XAMPP的情况。之后检查用户权限和主机配置,必要时更新权限。最后,重启MySQL服务应用更改。 还要考虑不同系统下的命令差异,比如Linux和Windows下停止服务的方式不同,用户可能需要相应的指导。此外,处理过程中可能会遇到其他问题,比如无法停止服务、文件权限问题等,可能需要进一步排查。 最后,生成相关问题,帮助用户覆盖更多可能的疑问,比如如何修改其他用户的权限,如何完全卸载MySQL,或者如何诊断连接问题。这些相关问题可以引导用户进一步解决问题,或者预防未来可能出现的类似情况。</think>### MySQL ERROR 1045 访问被拒绝的解决方案 #### 一、问题原因分析 该错误表明MySQL服务器拒绝了root用户从本地主机的登录请求,可能原因包括: 1. 密码输入错误(最常见原因) 2. root用户权限配置异常 3. 匿名用户与root账户冲突 4. 身份验证插件不匹配(如caching_sha2_password与mysql_native_password冲突)[^1][^2] #### 二、分步解决方案 ##### 方法1:密码验证与重置 1. **停止MySQL服务** ```bash # Linux系统 sudo systemctl stop mysql # Windows服务管理器中停止MySQL服务 ``` 2. **启动无权限验证模式** ```bash mysqld_safe --skip-grant-tables & ``` 3. **无密码登录MySQL** ```bash mysql -u root ``` 4. **修改root密码** ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; ``` 5. **重启MySQL服务** ```bash sudo systemctl restart mysql ``` ##### 方法2:XAMPP环境特殊处理(适用引用[2]场景) 1. 打开`phpmyadmin/config.inc.php` 2. 修改密码配置: ```php $cfg['Servers'][$i]['password'] = 'your_new_password'; ``` 3. 同步修改MySQL root密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NewPassword'; ``` ##### 方法3:权限修复 ```sql -- 检查用户权限 SELECT Host, User, plugin FROM mysql.user; -- 删除匿名用户 DELETE FROM mysql.user WHERE User=''; -- 更新root权限 GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES; ``` #### 三、验证修复 ```bash mysql -u root -p # 输入新密码后应能正常登录 ``` #### 四、预防措施 1. 定期备份`mysql.user`表 2. 避免直接修改系统表,使用`GRANT/REVOKE`语句 3. 启用MySQL日志功能监控登录尝试
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值