开发者

重置MySQL 8.0 Root密码的简便方法小结

目录
  • 解决方案
    • 1. 检查是否输入正确的密码
    • 2. 使用“跳过权限表”的方式重置 root 密码
      • 2.1 停止 mysql 服务
      • 2.2 以跳过权限表模式启动 MySQL
      • 2.3 重新打开另一个命令提示符窗口,登录 MySQL
      • 2.4 重置 root 密码
      • 2.5 关闭 MySQL 跳过权限表的模式并重启服务
      • 2.6 使用新密码登录
  • 总结

    在Windows环境下安装MySQL数据后,如果忘记了 MySQL 8.0 的 root 密码,不必担心!通过 --skip-grant-tables 和 named-pipe 模式登录后,只需几步简单的 SQL 命令即可重置密码:刷新权限表、修改密码、再刷新权限,最后重启 MySQL 服务,你就能使用新密码顺利登录数据库!

    问题如下:

    重置MySQL 8.0 Root密码的简便方法小结

    出现 ERROR 1045 (28000): phpAccess denied for user 'root'@'localhost' (using password: YES) 表示 MySQL 拒绝了你提供的 root 用户的密码。可能的原因包括:

    1. 密码不正确:你提供的密码和 root 用户的实际密码不匹配。
    2. MySQL 安装时的问题:可能在安装 MySQL 时设置的 root 用户密码不正确,或者被误改。
    3. 权限问题root 用户的权限或账户状态可能有问题

    解决方案

    1. 检查是否输入正确的密码

    确认你输入的密码是否正确,注意以下几点:

    确认你输入的密码是否正确,注意以下几点:

    • 密码区分大小写。
    • 确保没有意外的空格或字符被包含在密码中。
    • 确保你尝试的是 root 用户的密码,而不是其他用户。

    2. 使用“跳过权限表”的方式重置 root 密码

    如果你确认密码正确但仍然无法登录,或者你忘记了 root 密码,可以通过“跳过权限表”的方式重置密码。以下是步骤:

    2.1 停止 MySQL 服务

    在 Windows 下,你可以通过命令提示符停止 MySQL 服务:

    net stop mysql
    

    如果你使用的是不同的 MySQL 服务名称(如 mysql80),请将命令改为:

    net sjavascripttop mysql80
    

    问题一:如果执行net stop mysql后,出现“C:\Users\admin>net stop mysql80 发生系统错误 5。 拒绝访问。”

    出现 系统错误 5,并显示“拒绝访问”,通常意味着你没有足够的权限来停止 MySQL 服务。这是一个权限问题,通常是因为你未以管理员身份运行命令提示符。

    解决方法:

    方法一:以管理员身份运行命令提示符

    Windows 中的一些操作(如启动和停止服务)需要以管理员权限执行。请按以下步骤操作:

    • 打开命令提示符

      • 点击 开始 菜单,在搜索框中输入 cmd
      • 在搜索结果中,右键点击 命令提示符,然后选择 以管理员身份运行
      • 在以管理员权限运行的命令提示符中,输入以下命令:
    net stop mysql80

    或者,如果你的 MySQL 服务名称是 mysql 而不是 mysql80,则输入:

    net stop mysql
    
    • 检查 MySQL 服务名称

    在某些情况下,MySQL 的服务名称可能不是 mysql80。你可以通过以下步骤检查你系统中的 MySQL 服务名称:

    • 打开 命令提示符(以管理员身份运行)。

    • 输入以下命令查看所有服务:

    sc query
    

    在返回的列表中找到类似 mysql 或 mysql80 的条目,记下服务名称。

    或者,你可以专门查找 MySQL 服务:

    sc query | findstr /i "mysql"
    

    找到正确的服务名称后,再使用正确的服务名称来停止 MySQL 服务。

    方法二:使用 Windows 服务管理器停止 MySQL 服务

    如果不方便通过命令行操作,也可以使用 Windows 服务管理器来停止 MySQL 服务:

    • 按 Win + R 打开 运行 窗口,输入 services.msc,然后按回车。
    • 在服务管理器中找到 MySQL80 或类似 MySQL 的服务。
    • 右键点击该服务,然后选择 停止

    2.2 以跳过权编程客栈限表模式启动 MySQL

    使用 --skip-grant-tables 选项启动 MySQL。这个选项允许你在没有密码的情况下登录 MySQL。

    • 打开命令提示符,进入 MySQL 的安装目录,通常是 C:\Program Files\MySQL\MySQL Server <版本号>\bin。
    • 使用以下命令启动 MySQL 服务器(跳过权限表):
    mysqld --skip-grant-tables
    

    问题二:执行mysqld --skip-grant-tables 命令,再执行mysql -u root报错

    执行 mysqld --skip-grant-tables 命令,再执行mysql -u root,出现ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost:3306' (10061),表明 MySQL 服务并未成功启动。

    排查原因和解决方法:

    1. 确认 MySQL 是否成功启动

    执行 mysqld --skip-grant-tables 命令后,通常会显示一些输出。如果命令行未响应且没有提示 MySQL 已启动,可能说明启动失败。

    在执行该命令时,请查看是否有错误输出。如果启动失败,可能会遇到类似以下问题:

    • 配置文件错误:检查 my.ini 文件中的端口设置或其他参数。
    • 数据目录错误:确保 MySQL 的数据目录可访问且完整。

    如果没有看到任何输出,可以查看 MySQL 错误日志。

    2. 查看 MySQL 错误日志

    MySQL 错误日志中会包含详细的启动错误信息。日志通常位于 MySQL 数据目录下,文件名类似于 mysql.err 或 error.log。你可以打开该文件,查找任何与启动失败相关的错误。

    日志文件通常位于:

    # 路径为安装路径MySQL Server xx\Data\mysql.err下
    C:\ProgramData\MySQL\MySQL Server 8.0\Data\mysql.err

    可能不是mysql.err,需要看一下mysql.ini中配置,我的配置中文件名称为log-error="DESKTOP-ONBJR20.err"

    重置MySQL 8.0 Root密码的简便方法小结

    可以通过下面命令查看文件内容:

    type DESKTOP-ONBJR20.err
    # 或者
    more DESKTOP-ONBJR20.err
    • 错误日志信息如下:
    2024-09-24T03:22:02.873676Z 0 [ERROR] [MY-010131] [Server] TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS
    2024-09-24T03:22:02.873977Z 0 [ERROR] [MY-010119] [Server] Aborting
    2024-09-24T03:22:04.080405Z 0 [ERROR] [MY-013183] [InnoDB] Assertion failure: trx0sys.cc:643:UT_LIST_GET_LEN(trx_sys->mysql_trx_list) == 0 thread 32636

    从错误日志来看,MySQL 在启动过程中遇到了几个问题,导致无法成功启动。这是关键的错http://www.devze.com误信息:

    1. [ERROR] [MY-010131]TCP/IP, --shared-memory, or --named-pipe should be configured on NT OS

      • 这个错误表明在 Windows 环境中,MySQL 需要正确配置网络选项。它提到了需要使用 TCP/IPshared-memory 或 named-pipe 来进行通信。
    2. [ERROR] [MY-010119]Aborting

      • 这表明 MySQL 在遇到上述错误后停止了启动。
    3. [ERROR] [MY-013183] [InnoDB] Assertion failure: 这通常是由于js InnoDB 存储引擎中的一个内部一致性检查失败导致的。这个错误可能是由于损坏的事务或者数据导致的。

    解决方案

    1、修复 TCP/IP 或 Named Pipe 配置

    你可以确保 MySQL 正确使用 TCP/IP,这是大多数情况下的首选方式。检查 my.ini 中的网络设置。打开 my.ini 文件,确保以下设置存在且正确:

    [mysqld]
    bind-address=127.0.0.1
    enable-named-pipe

    2、修复 InnoDB 相关错误

    InnoDB 错误通常表明数据库文件或事务日志可能损坏。打开 my.ini 文件,添加以下配置来禁用 InnoDB 的恢复检查:

    [mysqld]
    innodb_force_recovery=0

    innodb_force_recovery 可以有 1 到 6 的值,分别对应不同的恢复力度。如果 1 无效,你可以逐渐增加到 2 或 3 尝试恢复,但避免使用更高的值(如 4-6),这些可能导致数据丢失。

    • 启动后,不要关闭此窗口。

    2.3 重新打开另一个命令提示符窗口,登录 MySQL

    • 在另一个命令提示符窗口中,使用以下命令登录 MySQL(不需要密码):

    mysql --protocol=PIPE -u root
    • 现在你应该可以登录 MySQL。

    2.4 重置 root 密码

    登录成功后,使用以下 SQL 命令重置 root 用户的密码:

    USE mysql;
     
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
     
    FLUSH PRIVILEGES;

    将 new_password 替换为你想要设置的新密码。

    2.5 关闭 MySQL 跳过权限表的模式并重启服务

    • 停止跳过权限表的 MySQL 服务:

      • 首先关闭命令提示符窗口中的 MySQL 服务进程(按下 Ctrl + C 或直接关闭该窗口)。
    • 重新启动 MySQL 服务:

    net start mysql
    

    2.6 使用新密码登录

    现在你可以使用新的密码登录:

    mysql -u root -p
    

    输入你刚才设置的密码,应该可以成功登录。

    总结

    • 如果你忘记了 root 密码,建议使用跳过权限表的方式重置密码。
    • 确保 MySQL 服务已经正确启动,且你在使用正确的用户名和密码进行登录。

    以上就是重置MySQL 8.0 Root密码的简便方法小结的详细内容,更多关于重置MySQL 8.0 Root密码的资料请关注编程客栈(www.devze.com)其它相关文章!

    0

    上一篇:

    下一篇:

    精彩评论

    暂无评论...
    验证码 换一张
    取 消

    最新数据库

    数据库排行榜