win2003 + wamp Access denied for user 'root'@'localhost'

1. Access denied for user 'root'@'localhost'    错误原因,wamp mysql 为空密码。
解决方法

首先用root账号登陆phpmyadmin,然后点击左侧进入mysql数据库,在顶部点击“mysql”进入sql输入界面。

输入以下命令:update user set password=password('123456') where User='root'


注意了,如果你修改了root密码之后我们的phpmyadmin的配置文件中的密码也需要修改,否则登录不上去哦。

phpmyadmin修改mysql数据库root密码成功

接着还要进入phpmyadmin目下下的libraries目录,修改config.default.php文件。找到$cfg['Servers'][$i]['password']  = ‘ ‘,

修改为

$cfg['Servers'][$i]['password']     = ’123456′;   

123456就是您想要的密码。

重启mysql后新密码生效。

其它方式修改root密码方法,利用命令模式下

如果丢失root密码

mysqld_safe --skip-grant-tables&
mysql -u root mysql
mysql> UPDATE user SET password=PASSWORD("new password") WHEREuser='root';
mysql> FLUSH PRIVILEGES;

正常情况下修改

用UPDATE直接编辑user表

mysql -u root

mysql> use mysql;

mysql> UPDATE user SET Password =PASSWORD('newpass') WHERE user = 'root';

mysql> FLUSH PRIVILEGES;

其他转载--------------------

方法一: 
# /etc/init.d/mysql stop 
# mysqld_safe --user=mysql --skip-grant-tables --skip-networking & 
# mysql -u root mysql 
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’; 
mysql> FLUSH PRIVILEGES; 
mysql> quit 
# /etc/init.d/mysql restart 
# mysql -uroot -p 
Enter password: <输入新设的密码newpassword> 
mysql> 
方法二: 
直接使用/etc/mysql/debian.cnf文件中[client]节提供的用户名和密码: 
# mysql -udebian-sys-maint -p 
Enter password: <输入[client]节的密码> 
mysql> UPDATE user SET Password=PASSWORD(’newpassword’) where USER=’root’; 
mysql> FLUSH PRIVILEGES; 
mysql> quit 
# mysql -uroot -p 
Enter password: <输入新设的密码newpassword> 
mysql> 

内容来自: 脚本之家 www.jb51.net 

另一个方法
Windows:

1. 管理员登陆系统,停止mysql服务或者结束mysqld-nt进程
2. 进入命令行,来到mysql的安装目录.假设安装目录为 d:\mysql\ , CMD进入命令行
3. 运行 d:\mysql\bin\mysqld-nt --skip-grant-tables 启动mysql,关闭权限的检查
4. 运行 d:\mysql\bin\mysqladmin -u root flush-privileges password "newpassword" 重设root密码
5. 重新启动mysql服务

第4步也可以直接修改mysql表,所用到的SQL语句同linux部分,这里就不再重复了.



<think>好的,我现在需要解决用户遇到的MySQL修改密码后登录出现ERROR 1045的问题。首先,用户提到使用的是MySQL 8.0.41版本,在Windows系统下。根据提供的引用信息,特别是引用[1]和引用[2],用户可能在修改密码后遇到了权限问题或密码设置的问题。 首先,我应该回忆一下MySQL 8.0版本在密码认证方面的变化。记得从MySQL 8.0开始,默认的身份验证插件从`mysql_native_password`改为了`caching_sha2_password`[^1]。这可能导致一些旧的客户端或连接方式出现问题,但用户在修改密码时如果没有指定使用旧的插件,也可能导致登录失败。 接下来,用户可能按照常规方法修改了密码,但之后无法登录。常见的解决办法包括使用skip-grant-tables模式启动MySQL服务,然后重新设置密码。但需要注意,在MySQL 8.0中,修改密码的语法可能与之前的版本不同,需要使用`ALTER USER`而不是`UPDATE`直接修改user表,因为直接修改表可能不会更新权限或者导致插件不匹配的问题。 另外,引用[2]提到在WAMP环境下修改根密码后出现无法连接的问题,提示无效的密码。这可能是因为在修改密码时没有正确刷新权限,或者密码策略不符合要求,比如密码过于简单。此外,可能需要检查用户的主机权限是否正确,比如是否为`localhost`或其他主机设置了正确的访问权限。 接下来,我需要整理出具体的解决步骤。首先,用户需要停止MySQL服务,然后以跳过权限检查的方式启动它。这可以通过在命令行中使用`mysqld --skip-grant-tables`来实现。然后,连接到MySQL服务器,无需密码即可登录。这时,执行`FLUSH PRIVILEGES;`来重新加载权限表,接着使用`ALTER USER`语句来修改密码,并确保使用正确的身份验证插件。例如,将root用户的密码设置为新密码,并指定使用`mysql_native_password`插件,或者保持默认的`caching_sha2_password`但确保客户端支持。 修改密码后,需要重启MySQL服务,并以正常模式启动,然后尝试用新密码登录。如果仍然有问题,可能需要检查MySQL的配置文件my.ini或my.cnf,确认是否有任何旧的设置或残留的参数导致冲突。另外,用户可能需要确认在修改密码时是否有拼写错误,或者密码中包含特殊字符需要转义处理。 此外,用户可能在修改密码后没有正确刷新权限,导致旧的密码仍然被缓存。因此,使用`FLUSH PRIVILEGES;`命令是非常重要的。同时,检查用户表中是否存在多个root用户记录,不同的主机(如localhost、127.0.0.1、::1)可能需要分别处理,确保每个记录的密码都正确更新。 最后,如果所有方法都失败,可能需要考虑备份数据,重新安装MySQL或WAMP套件,但这应该是最后的手段。用户还应该参考MySQL官方文档,确认是否有版本特定的注意事项,比如在Windows服务中的配置步骤是否正确,或者是否有其他依赖项需要调整。</think>### MySQL ERROR 1045 (Access Denied) 的解决方法 #### 1. **确认问题原因** 当修改MySQL密码后出现`ERROR 1045`,通常由以下原因导致: - 密码未正确更新或未刷新权限。 - 身份验证插件不匹配(如MySQL 8.0默认使用`caching_sha2_password`,旧客户端可能不支持)[^1]。 - 用户表权限配置错误[^2]。 --- #### 2. **通过安全模式重置密码** **步骤1:停止MySQL服务** ```bash # Windows命令(管理员权限) net stop mysql80 ``` **步骤2:以无权限验证模式启动MySQL** ```bash # 进入MySQL安装目录的bin文件夹 mysqld --skip-grant-tables --shared-memory ``` **步骤3:新窗口登录并重置密码** ```bash mysql -u root ``` ```sql -- 刷新权限表 FLUSH PRIVILEGES; -- 修改root密码(MySQL 8.0语法) ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; -- 若需兼容旧客户端,指定身份验证插件 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'new_password'; ``` **步骤4:重启MySQL服务** ```bash # 关闭mysqld进程,然后正常启动服务 net start mysql80 ``` --- #### 3. **验证配置文件** 检查`my.ini`或`my.cnf`文件(通常位于`C:\ProgramData\MySQL\MySQL Server 8.0`): ```ini [mysqld] default_authentication_plugin=mysql_native_password # 可选:强制使用旧插件 ``` --- #### 4. **其他可能问题** - **密码策略冲突**:若密码太简单,需调整策略: ```sql SET GLOBAL validate_password.policy = LOW; ``` - **多用户记录**:删除重复的root用户: ```sql DELETE FROM mysql.user WHERE User='root' AND Host NOT IN ('localhost', '127.0.0.1'); ``` --- #### 5. **WAMP环境特殊处理** 若通过WAMP修改密码后失败: 1. 使用WAMP菜单中的**MySQL控制台**直接登录。 2. 执行`ALTER USER`命令后,重启所有WAMP服务[^2]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值