如何在 MySQL 8.0.11中重置 root 密码?

我实际上丢失了 root 用户的密码,需要修改它:

  • 步骤 # 1: 停止 MySQL 服务器进程。

    步骤 # 2: 使用 --跳过-Grant-tables 选项,这样它就不会提示输入密码。

    步骤 # 3: 作为 root 用户连接到 MySQL 服务器。

我们可以在这个网站上找到: https://www.howtoforge.com/setting-changing-resetting-mysql-root-passwords#recover-mysql-root-password

mysql> use mysql;
mysql> SET PASSWORD FOR 'root'@'localhost' = PASSWORD("TOOR");
mysql> flush privileges;
mysql> quit

第一个错误,所以我试了试:

mysql> use mysql;
mysql> update user set password=PASSWORD("TOOR") where User='root';
mysql> flush privileges;
mysql> quit

总是出现同样的错误:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near '("TOO
R") WHERE User='root'' at line 1

我该怎么办?

126326 次浏览

试试这个:

ALTER USER 'root'@'localhost' IDENTIFIED BY 'newPasswd';

正如 给你所言:

在 MySQL 8.0.11中删除了这个函数

1. 如果处于跳过补助金表格模式
在 mysqld _ safe 中:

UPDATE mysql.user SET authentication_string=null WHERE User='root';
FLUSH PRIVILEGES;
exit;

然后,在最后:

mysql -u root

在 mysql 中:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

2. 不处于跳过补助金表格模式
只是在 mysql:

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';

使用 SQLYog 可以执行命令

  • 创建用户

    CREATE USER 'tester'@'localhost' IDENTIFIED BY 'Pass123#d'
    
  • Authorization

    GRANT ALL PRIVILEGES ON sakila.* TO 'tester'@'localhost'
    
  • Changing Password in MySQL 8.0

    ALTER USER 'tester'@'localhost' IDENTIFIED BY 'Pass123#d';
    

    或者如果您知道 entication _ string,则直接将其设置为 update

    UPDATE mysql.user
    SET authentication_string='*F9B62579F38BE95639ACB009D79427F2D617158F'
    WHERE USER='root'
    
  • Changing password in lower versions of mysql

    GRANT USAGE ON *.\* TO 'tester'@'localhost' IDENTIFIED BY 'Pass123#d'
    SET PASSWORD FOR 'tester'@'localhost' = PASSWORD('Pass123#d');
    

步骤1: 在根目录中创建一个新文件(如 C:) 步骤2: 编写这个 用户‘ root’@‘ localhost’标识为‘ abc’并保存它 步骤3: 如果您的 Mysql 服务已经在运行,请停止此操作并打开您的 CMD 步骤4: 转到 MySQL 安装目录(例如 C: Program Files MySQL MySQL Server 8.0 bin)并键入以下命令

mysql --init-file=C:/init.sql

步骤5: 执行这个命令,就可以开始了:)

请参考此视频以获得更多澄清: https://www.youtube.com/watch?v=LsdV-7dFOhk

用 sudo 登录 mysql

Sudo mysql

然后

ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'yourpasswd';
exit;

测试一下

mysql -u root -p

我正在使用8.0.23,但是遇到了很多问题。 我按照 mysql 文档进行了重置,尽管我遇到了一些问题。我已经提供了我的解决方案和一个示例重置脚本。

问题

  1. 以下步骤由其他人概述有各种各样的失败
  2. 用户运行的守护进程是 mysql,我不能 su 为 mysql id
  3. 获取错误不能创建锁文件/var/run/mysqld/mysqlx.sock.lock,mysqld 文件夹被 mysql 服务删除。
  4. 运行后必须杀死 -9 mysql 进程,非常难看

解决方案

  1. 使用来自 https://dev.mysql.com/doc/refman/8.0/en/resetting-permissions.html的步骤
  2. 在运行 mysql 命令时使用—— user = mysql
  3. 在运行命令之前,为 mysql: mysql 创建/var/run/mysqld 和 chown 文件夹
  4. 使用 mysqladmin 关闭在启动 sql 后停止它进行重置

在脚本中,我将根目录重置为“新建% 密码”

# create password reset file
cat << EOF >/tmp/deleteme
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'New%Password';
EOF
# create /var/run/mysqld
mkdir /var/run/mysqld
chown mysql:mysql /var/run/mysqld
# start mysqld and run the command
mysqld --init-file=/tmp/deleteme --user=mysql &
# wait for sql to start
while [ ! -f /var/run/mysqld/mysqlx.sock.lock ]; do sleep 1; done
sleep 3
# stop sql
mysqladmin -u root -pNew%Password shutdown
while [ -f /var/run/mysqld/mysqlx.sock.lock ]; do sleep 1; done
#clean up temp file
rm /tmp/deleteme

如果在 Windows 上,可以尝试执行以下步骤

在 Windows 中重置 MySQL 8.0 root 密码

  1. 停止服务中的 MySQL 8.0服务
  2. 转到路径 C: Program Files MySQL MySQL Server 8.0 bin并打开 cmd
  3. 运行 mysqld --console --skip-grant-tables --shared-memory
  4. 在同一路径中打开新的 cmd
  5. 运行以下命令
  6. mysql -u root
  7. select authentication_string,host from mysql.user where user='root';
  8. UPDATE mysql.user SET authentication_string='' WHERE user='root';
  9. 现在关闭两个 cmd
  10. 尝试启动 MySQL 8.0服务。
  11. 连接使用用户名作为 ,密码作为空白。
  12. 从用户管理中更改密码。

https://gist.github.com/pishangujeniya/0f839d11a7e692dadc49821c274a2394发现了这个