关于登录mysql时遇到的 error1045 错误

本文介绍了解决MySQL登录时出现的error1045(28000)错误的方法,包括停启MySQL服务、临时禁用权限表、修改root用户的密码等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        error 1045(28000):access denied for user 'root@localhost' (using password:yes)

解决该问题,网上普遍给出了以下的方法:

1.运行命令行界面,net stop mysql,然后修改my.ini文件,在[mysqld]下添加这句:skip-grant-tables;然后再net start mysql开启MySQL服务;
2.在命令行界面登录mysql:mysql -uroot -p再enter会让你输入password,这时可以跳过输入密码,直接enter进入mysql; 
3.要修改密码
   ->use mysql;
   ->update user set password="(yourpassword)" where user="root";
   ->flash privileges;
   ->quit;
4.在my.ini 文件里将skip-grant-tables注释掉,再重启mysql服务(net restart mysql / 在任务管理器中重启)
5.(关键点)尝试登录mysql,这时任然会出现error 1045错误,因为这里有一个很关键的错误:password的设置需要PASSWORD('')函数,如果直接password=“...”,mysql自己解密出来的并不是你原来想设置的密码,所以正确的修改语句:
UPDATE user SET password=PASSWORD('...') WHERE user="root";
至此,问题解决。
### 关于 MySQL Error 1045 Access Denied 的解决方案 当遇到 `Error 1045 (28000): Access denied for user 'root'@'localhost'` 错误,这通常是由于用户名、密码错误或权限配置不当引起的。以下是详细的分析和两种常见的解决方法。 #### 原因解析 该错误可能由以下几个原因之一引起: 1. 数据库密码被更改或遗忘[^1]。 2. 用户名拼写错误或不存在。 3. 权限表中的用户记录存在问题,例如用户的主机字段未正确设置[^5]。 --- #### 方法一:通过跳过授权表重置密码 这种方法适用于无法正常登录的情况,允许管理员绕过权限验证来修改根用户密码。 ##### 步骤说明 1. **停止 MySQL 服务** - 在 Windows 上可以通过服务管理器找到 MySQL 并停止它;在 Linux 中可以运行以下命令: ```bash sudo service mysql stop ``` 2. **启动 MySQL 跳过授权表** - 使用 `--skip-grant-tables` 参数重新启动 MySQL 实例。对于 Windows 系统,在命令行中导航至 MySQL 安装路径下的 bin 文件夹,并执行如下命令: ```bash mysqld --defaults-file="D:\Program Files\MySQL\MySQL Server 5.2\my.ini" --console --skip-grant-tables ``` 对于 Linux 系统,则可以直接运行: ```bash /usr/sbin/mysqld --skip-grant-tables & ``` 3. **连接到 MySQL 控制台** - 打开一个新的终端窗口并尝试无密码登录: ```bash mysql -u root ``` 4. **更新密码** - 更新 `root` 用户的密码。如果使用的 MySQL 是 5.7 或更高版本,请使用 `ALTER USER` 语句代替旧版语法: ```sql USE mysql; -- 针对 MySQL 5.6 及更早版本 UPDATE user SET authentication_string=PASSWORD('新密码') WHERE User='root'; -- 针对 MySQL 5.7 及以上版本 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; FLUSH PRIVILEGES; ``` 5. **重启 MySQL 服务** - 结束当前会话并恢复正常的 MySQL 服务状态: ```bash exit sudo service mysql restart ``` --- #### 方法二:检查用户权限表 有即使密码正确也可能因为权限问题而拒绝访问。此需要确认用户是否存在以及其对应的主机地址是否匹配。 ##### 查询现有用户及其关联主机 ```sql SELECT host, user FROM user; ``` 如果查询结果显示 `'%'` 或其他非预期值作为 `host` 字段的一部分,则可能导致认证失败[^5]。 ##### 修改用户权限范围 假设目标是让 `root` 用户可以从任何地方访问服务器(仅用于测试环境),可执行以下 SQL 操作: ```sql CREATE USER 'root'@'%' IDENTIFIED BY '新密码'; GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'; FLUSH PRIVILEGES; ``` > 注意事项:生产环境中应谨慎授予广泛权限以免带来安全隐患! --- ### 总结 上述两种方法分别解决了忘记密码与权限配置异常两类典型场景下的 `Error 1045` 报错现象。实际应用过程中需依据具体情况灵活选用合适策略完成修复工作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值