mysql忘记密码如何重置centos
时间: 2024-12-27 11:18:11 浏览: 2
### 如何在 CentOS 上重置 MySQL 根用户密码
#### 修改配置文件以跳过权限验证
为了能够不通过密码登录并更改 `root` 用户的密码,需要编辑 MySQL 的配置文件 `/etc/my.cnf` 并加入特定参数来绕过授权表:
```bash
vi /etc/my.cnf
```
在该文件末尾添加如下行以便让 MySQL 跳过权限检查[^1]:
```ini
[mysqld]
skip-grant-tables
```
保存并关闭文件。
#### 重启 MySQL 服务
使上述更改生效,需重新启动 MySQL 数据库服务器:
```bash
systemctl restart mysqld
```
此时数据库会忽略访问控制列表而允许无认证连接[^3]。
#### 登录到 MySQL 控制台
由于已经设置了 `skip-grant-tables` 参数,在尝试登录时不会被提示输入密码,直接按 Enter 即可进入 MySQL 命令行界面:
```sql
mysql -u root -p
```
注意这里虽然显示要输入密码但实际上不需要提供任何凭证就能成功登陆。
#### 更新 Root 用户密码
一旦进入了 MySQL 终端,则可以执行 SQL 查询语句更新 `root` 用户账户的信息。对于 MySQL 版本不同可能使用的字段名称有所区别:
- 对于较新的版本 (如 MySQL 8.x),应使用 `authentication_string` 字段设置新密码;
- 较旧版本则可能是 `password` 或者其他类似的命名方式。
具体命令如下所示(适用于 MySQL 8.0 及以上版本)[^2]:
```sql
USE mysql;
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
```
如果遇到错误或者不确定当前安装的是哪个版本的话,也可以采用更通用的方式去清空密码再设定新值:
```sql
UPDATE user SET authentication_string=PASSWORD('new_password') WHERE User='root';
FLUSH PRIVILEGES;
```
这里的 `'new_password'` 需替换为自己想要设立的新密码字符串。
#### 移除临时配置项恢复安全性
完成密码变更之后应当立即移除之前所做的改动以恢复正常的安全机制。打开 `/etc/my.cnf` 文件删除先前增加的那一行关于 `skip-grant-tables` 的定义,接着再次重启 MySQL 来应用这些变化:
```bash
sed -i '/skip-grant-tables/d' /etc/my.cnf
systemctl restart mysqld
```
现在应该可以用刚刚创建好的新密码正常登录了。
阅读全文