Mysql8 忘记密码的解决办法

  1. 先暂停服务
    1
    2
    3
    4
    5
    # 首先暂停服务
    net stop mysql

    # 以绕过权限表的形式开启mysql服务
    mysqld --console --skip-grant-tables --shared-memory
  2. 开启服务后,打开一个新的命令窗口
    1
    2
    # 无需输入密码(在输入密码处可直接回车进入)
    mysql -u root -p
  3. 修改密码为空,注意authentication_string的值是空字符串
    1
    2
    use mysql;
    UPDATE mysql.user SET authentication_string='' WHERE user = 'root';
  4. 此刻允许下面sql可以看到密码以及重置为空
    1
    SELECT host,user,authentication_string FROM mysql.user;
  5. 关闭之前保留的那个控制台窗口和现在使用的这个控制台窗口一共关闭两个控制台窗口。然后再打开一个新的窗口,启动MySQL的服务。
    1
    2
    3
    4
    5
    # 启动mysql
    net start mysql

    # 无需密码登录
    mysql -u root -p
  6. 修改密码
    1
    ALTER user 'root' IDENTIFIED BY '123456';
  7. 如果第六步的修改密码出错可以使用下面的sql
    1
    ALTER user 'root'@'localhost' IDENTIFIED BY '123456';