mysql8 更改用户密码报-skip-grant-table
时间: 2023-09-02 11:03:21 浏览: 78
在MySQL 8中,如果更改用户密码时出现"-skip-grant-table"错误,这是由于MySQL的安全机制所致。该错误产生时,通常是因为跳过访问控制表(skip-grant-table)的选项被设置为启用。
当启用了"-skip-grant-table"选项后,MySQL将跳过对访问控制表的读取和验证,使得可以无需密码直接登录MySQL。这样做是为了方便恢复忘记密码的情况。然而,这也带来了一定的安全风险,因此不建议在生产环境中长时间启用该选项。
要解决此问题并成功更改用户密码,需要按照以下步骤操作:
1. 首先,登录到MySQL服务器上的命令行界面。
2. 在命令行界面中,输入以下命令来停止MySQL服务:
sudo systemctl stop mysql
3. 接下来,使用以下命令启动MySQL服务,并且加上"--skip-grant-table"选项,以便在启动时跳过访问控制表的验证:
sudo mysqld --skip-grant-table &
4. 当MySQL服务成功启动后,打开另一个命令行界面窗口。
5. 在新的命令行界面中,输入以下命令来连接到MySQL服务器:
mysql -u root
6. 连接成功后,使用以下命令进入MySQL数据库:
use mysql;
7. 然后,执行以下命令来更改用户密码。例如,要更改用户名为"username"的用户的密码为"new_password",可以使用以下命令:
update user set authentication_string=password('new_password') where user='username';
8. 修改完成后,输入以下命令来刷新权限:
flush privileges;
9. 最后,退出MySQL数据库并停止MySQL服务:
quit
sudo systemctl stop mysql
10. 现在,你可以重新启动MySQL服务,并使用新的密码登录了:
sudo systemctl start mysql
请记住,在完成密码更改后,应在MySQL配置文件中注释或删除"--skip-grant-table"选项,以确保安全性。