一、使用 --skip-grant-tables 重置root密码
一种简单而常见的方法是在MySQL服务器上使用 --skip-grant-tables 选项将密码重置为新密码。该选项启动MySQL服务器并忽略所有访问权限,从而允许root用户使用以下步骤更改密码:
Step 1:停止当前正在运行的MySQL服务器 sudo systemctl stop mysql Step 2:启动MySQL服务器,跳过访问权限检查 sudo mysqld --skip-grant-tables & Step 3:连接到MySQL服务器,使用mysql客户端 mysql -u root Step 4:在MySQL控制台中更新密码,并刷新访问权限 update mysql.user set authentication_string=password('NEWPASSWORD') where user='root'; flush privileges; Step 5:退出MySQL控制台,并停止MySQL服务器 exit; sudo systemctl stop mysql Step 6:启动MySQL服务器正常验证 sudo systemctl start mysql
二、使用mysql_config_editor设置root密码
在MySQL 5.6.6版本之后,提供了一个名为mysql_config_editor的命令行实用程序,可以使用它来更安全地设置MySQL用户名和密码。要使用此实用程序,请执行以下步骤:
Step 1:使用mysql_config_editor创建一个新的MySQL登录路径 mysql_config_editor set --login-path=local --host=localhost --user=root --password Step 2:在新的MySQL登录路径中重置root用户的密码 mysql_config_editor set --login-path=local --host=localhost --user=root --password=NEWPASSWORD
三、在MySQL 8.0.11+之前使用默认加密插件方法
这是一个针对MySQL 8.0.11及更早版本的方法,这些版本使用mysqld默认加密插件,即mysql_native_password。在这种情况下,可以使用以下方法更改MySQL root密码:
Step 1:停止MySQL服务器 sudo systemctl stop mysql Step 2:启动MySQL服务器并跳过权限检查 sudo mysqld_safe --skip-grant-tables & Step 3:使用mysql客户端连接到MySQL服务器 mysql -u root Step 4:设置新密码,并刷新访问权限 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'NEWPASSWORD'; flush privileges; Step 5:退出MySQL控制台,并停止MySQL服务器 exit; sudo systemctl stop mysql Step 6:启动MySQL服务器正常验证 sudo systemctl start mysql
四、在MySQL 8.0.11+之后使用caching_sha2_password插件方法
MySQL在8.0.11版本中更改了默认的身份验证插件,将其从mysql_native_password更改为caching_sha2_password。这种更改带来了更强的安全性,但可能需要使用以下步骤更改root用户的密码:
Step 1:停止当前正在运行的MySQL服务器 sudo systemctl stop mysql Step 2:使用 --skip-grant-tables 参数启动MySQL服务器,并连接到MySQL服务器 sudo mysqld --skip-grant-tables & mysql -u root Step 3:使用ALTER USER命令修改root用户的身份验证插件和密码 ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'NEWPASSWORD'; flush privileges; Step 4: 退出MySQL控制台,并停止MySQL服务器 exit; sudo systemctl stop mysql Step 5:使用正常的方式启动MySQL服务器,并使用新密码登录 sudo systemctl start mysql mysql -u root -p以上是在不同MySQL版本上解决忘记MySQL root密码的四种不同的方法。通过这些方法,我们可以帮助开发人员更好地解决MySQL8密码忘记问题,保证MySQL服务器的正常使用。