linux中mysql8.0重置密码
时间: 2025-05-17 07:17:20 浏览: 18
### Linux环境下重置MySQL 8.0的root用户密码
在Linux系统中,如果忘记了MySQL 8.0的`root`用户密码,可以通过以下方法重新设置密码:
#### 停止MySQL服务
首先需要停止正在运行的MySQL服务。可以使用以下命令来完成此操作:
```bash
sudo systemctl stop mysql
```
#### 启动MySQL跳过权限验证
为了能够无需密码访问数据库并更改`root`用户的密码,需要以安全模式启动MySQL服务器。执行如下命令:
```bash
sudo mysqld_safe --skip-grant-tables &
```
这条命令会绕过权限表加载,允许管理员不受限制地进入数据库。
#### 登录到MySQL
一旦MySQL以跳过授权表的方式启动成功,就可以通过简单的命令登录到MySQL客户端而不需要输入任何密码:
```bash
mysql -u root
```
#### 修改root用户的密码
进入到MySQL控制台之后,先切换至`mysql`数据库:
```sql
USE mysql;
```
接着更新`root`用户的认证字符串。这里提供两种方式实现这一目标。
##### 方法一:直接更新authentication_string字段
可以直接修改`user`表中的`authentication_string`字段为空或者设定新的哈希值:
```sql
UPDATE user SET authentication_string = PASSWORD('新密码') WHERE User = 'root';
```
注意,在MySQL 8.0及以上版本中,`PASSWORD()`函数已被废弃,因此推荐改用插件方式进行身份验证设置[^4]。
##### 方法二:利用ALTER USER语句改变密码
这是更为现代的方法,适用于MySQL 8.0及其后续版本。它不仅更简洁而且更加直观:
```sql
ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码';
```
如果是远程连接的情况,则可能还需要考虑针对其他主机地址(如`%`)上的用户进行同样的处理[^5]:
```sql
ALTER USER 'root'@'%' IDENTIFIED BY '新密码';
```
#### 刷新权限并退出
完成上述任一步骤后,记得刷新权限使改动生效,并正常退出MySQL客户端:
```sql
FLUSH PRIVILEGES;
EXIT;
```
#### 恢复常规MySQL服务
最后关闭之前后台开启的安全模式实例,并重启标准的服务流程让一切恢复正常运作状态:
```bash
sudo kill $(pgrep -f "mysqld_safe")
sudo systemctl start mysql
```
现在应该可以用刚刚设置的新密码去登录管理您的MySQL数据库了。
阅读全文
相关推荐


















