MySQL ERROR 1045 (28000) 报错解决方法

陈默
陈默
发布时间:2026-10-13 | 2人浏览过
原创

当连接 MySQL 数据库时遇到 ERROR 1045 (28000): Access denied for user 'ODBC'@'localhost' 错误,通常意味着身份验证失败或密码错误。在忘记 root 密码且无法通过常规方式登录的情况下,可以通过修改配置文件跳过权限表验证来重置密码。以下是具体的操作流程。

修改配置文件跳过权限验证

首先,需要找到 MySQL 的安装目录或数据目录,定位到配置文件 my.ini(部分版本可能为 my.cnf)。使用记事本或其他文本编辑器打开该文件。

在文件中搜索关键字 mysqld。在该标识符下方添加一行内容:skip-grant-tables。这一步的作用是告诉 MySQL 服务器在启动时不加载授权表,从而允许任何人无需密码即可连接数据库。

注意:如果系统提示无法直接保存 my.ini 文件,可能是因为权限不足或文件被占用。此时可以将文件剪切到桌面,修改保存后,再将其复制回 MySQL 的原始目录下覆盖原文件。

重启 MySQL 服务

保存配置文件后,必须重启 MySQL 服务以使更改生效。可以通过 Windows 的服务管理器(services.msc)停止并启动 MySQL 服务,或者使用命令行指令进行重启。

无密码登录并重置 Root 密码

服务重启完成后,打开命令提示符(CMD),输入以下命令尝试登录:

mysql -u root -p

当系统提示输入密码(Password:)时,直接按下回车键。由于之前配置了 skip-grant-tables,此时应能成功进入 MySQL 命令行界面。

进入数据库后,依次执行以下 SQL 语句:

  1. 切换数据库:切换到存储用户信息的 mysql 数据库。
    use mysql;
  2. 更新密码:将 root 用户的密码修改为新密码。请注意,新版 MySQL(5.7.6+ 及 8.0+)通常使用 authentication_string 字段或 ALTER USER 语句,但在此经典教程场景中,我们沿用原文提供的 UPDATE 语法(适用于较老版本如 5.6 及以下)。
    UPDATE user SET password=PASSWORD("123456") WHERE user='root';
  3. 刷新权限:使修改立即生效。
    FLUSH PRIVILEGES;
  4. 退出:
    quit;

风险提示:上述 password() 函数仅适用于 MySQL 5.7 之前的版本。如果是 MySQL 8.0 及以上版本,请改用 ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';,否则可能会报错或导致密码格式不兼容。

恢复配置并重启

密码重置成功后,必须恢复正常的权限验证模式。再次打开 my.ini 配置文件,删除之前添加的 skip-grant-tables 这一行,然后保存并关闭文件。

最后,再次重启 MySQL 服务。此时,你便可以使用刚刚设置的新密码(如 123456)正常登录 MySQL 数据库了。

以上就是解决 MySQL ERROR 1045 Access denied 错误的详细内容,更多关于 MySQL 密码重置的资料请关注本站其它相关文章!

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表