当前位置: 代码网 > it编程>数据库>Mysql > MySQL报错ERROR 1045 (28000): Access Denied的终极解决方案

MySQL报错ERROR 1045 (28000): Access Denied的终极解决方案

2025年12月03日 Mysql 我要评论
mac 数据库又忘记密码了,记录一下更改密码! 核心思路是:跳过权限验证进入 mysql。修复用户或密码。恢复权限表。错误场景复现执行以下命令时被拒绝访问:mysql -u root -p <

mac 数据库又忘记密码了,记录一下更改密码! 核心思路是:

  1. 跳过权限验证进入 mysql。
  2. 修复用户或密码。
  3. 恢复权限表。

错误场景复现

执行以下命令时被拒绝访问:

mysql -u root -p < /var/lib/mysql-files/reset.sql
# 或
sudo /usr/local/mysql/bin/mysql -u root -p < /var/lib/mysql-files/reset.sql

输入密码后提示:

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

原因分析

  1. 密码错误:输入的 root 密码不正确。
  2. 权限缺失root@localhost 用户不存在或权限被限制。
  3. mysql 服务异常:权限表未正确加载或损坏。
  4. 路径问题:使用了错误的 mysql 客户端或服务路径。

解决方案(亲测有效)

步骤 1:重置 root 密码(核心步骤)

停止 mysql 服务

sudo /usr/local/mysql/support-files/mysql.server stop

如果提示找不到命令,尝试:

sudo brew services stop mysql  # homebrew 安装的 mysql

以安全模式启动 mysql(跳过权限验证)

sudo /usr/local/mysql/bin/mysqld_safe --skip-grant-tables &

成功启动后,终端会卡住(显示 starting mysqld daemon with databases...),这是正常现象。

无密码登录 mysql

/usr/local/mysql/bin/mysql -u root

更新 root 密码(mysql 5.7+):

flush privileges;
alter user 'root'@'localhost' identified by '你的新密码';
flush privileges;
exit;

如果报错 error 1396,可能是用户不存在,需先创建用户(见步骤 2)。

重启 mysql 服务

sudo /usr/local/mysql/support-files/mysql.server restart

步骤 2:检查 root 用户权限(备用方案)

如果重置密码后仍无法登录,可能是 root@localhost 用户不存在或权限不足:

以安全模式登录后执行:

select host, user from mysql.user;

如果缺少 root@localhost,手动创建:

create user 'root'@'localhost' identified by '你的密码';
grant all privileges on *.* to 'root'@'localhost' with grant option;
flush privileges;

步骤 3:验证 mysql 路径

确认客户端路径是否正确:

which mysql
# 应返回 /usr/local/mysql/bin/mysql 或 /usr/local/opt/mysql/bin/mysql

如果路径不一致,使用绝对路径执行命令:

sudo /usr/local/mysql/bin/mysql -u root -p

步骤 4:检查文件权限

确保 reset.sql 文件可读:

ls -l /var/lib/mysql-files/reset.sql
sudo chmod 644 /var/lib/mysql-files/reset.sql  # 如果权限不足

步骤 5:查看 mysql 错误日志

定位更深层次的问题:

sudo tail -n 50 /usr/local/mysql/data/*.err

到此这篇关于mysql报错error 1045 (28000): access denied的终极解决方案的文章就介绍到这了,更多相关mysql报错error 1045内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com