Mysql的root密码忘了怎么办?

当在Linux上使用MySQL时忘记root密码,可以通过停止服务、设置跳过密码验证、启动服务、修改密码及恢复配置来解决。具体包括:停止mysql服务,编辑my.cnf添加skip-grant-tables,启动服务,无密码进入MySQL,使用`set password for 'root'@'localhost' = password('123456');`命令修改密码,最后去掉skip-grant-tables并重启服务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 总体说明

对于学习Linux的人来说,使用Mysql时可能不会刻意地用Excel记录下自己设定的root密码,亦或是记下了但是却在输入的时候发生了冲突。

 当这种局面出现的时候,下面的方法也许可以给你提供一些参考。

操作步骤:

1、停止mysql服务

2、进行跳过密码验证的设置

3、启动mysql服务

3、跳过密码验证进入Mysql

4、修改root密码

5、收尾工作

  • 详细的操作说明

1、停止mysql服务

首先是停止mysql服务。

net stop mysql           #笔者这里用的是systemctl stop mysqld

2、进行跳过密码验证的设置

在/etc/my.cnf文件中,找到[mysqld]一行(如没有则请自行添加),在下面添加一行skip-grant-tables

vim /etc/my.cnf

3、启动mysql服务

net start mysql           #笔者这里用的是systemctl start mysqld

4、跳过密码验证进入Mysql

mysql -u root -p                      #要求你输入密码的时候,打个回车即可

5、修改root密码

MariaDB[(none)]> set password for 'root'@'localhost'=password('123456');
#注:有些博客中使用了
update mysql.user set password=password("123456") where User="root" and Host="localhost";
的命令,但是总会出现'Password' is not updatable'的错误。
#注2:如果出现
The MariaDB server is running with the --skip-grant-tables option so it cannot execute this statement
的报错的话,请刷新一下权限再修改root密码。

刷新权限的命令:
​​​​​​​MariaDB [(none)]> flush privileges;

6、收尾工作

修改完毕后,停止mysql服务

net stop mysql

在/etc/my.cnf文件中,找到[mysqld]一行(如没有则请自行添加),在添加的skip-grant-tables前面加上#号将其无效化。

vim /etc/my.cnf

再次启动mysql服务

net start mysql

最后验证一下修改后的密码是否正确即可。

mysql -u root -p

### 重置 MySQL root 密码的完整方法 MySQL 的 `root` 用户拥有数据库系统的最高权限,如果忘记该用户的密码,可以通过多种方式重新设置。以下是几种常见的方式,适用于不同版本和操作系统上的 MySQL 数据库。 #### 方法一:通过跳过授权表重置密码 1. **停止 MySQL 服务** 在命令行中执行以下命令来停止正在运行的 MySQL 服务: ```bash net stop mysql ``` 2. **启动 MySQL 并跳过授权表** 使用 `--skip-grant-tables` 参数启动 MySQL,这样可以绕过权限验证机制: ```bash mysqld --skip-grant-tables ``` 3. **连接到 MySQL 服务器** 打开一个新的命令行窗口,并使用以下命令连接到 MySQL: ```bash mysql -u root ``` 4. **更新 root 用户密码** 根据你的 MySQL 版本,选择适当的 SQL 命令来更新密码。对于 MySQL 5.7.6 及以上版本,可以使用以下语句: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; ``` 对于更早版本(如 MySQL 5.6),可以使用如下语句: ```sql UPDATE mysql.user SET password=PASSWORD('NewPassword') WHERE user='root' AND host='localhost'; ``` 5. **刷新权限** 执行以下命令使更改生效: ```sql FLUSH PRIVILEGES; ``` 6. **退出并重启 MySQL 服务** 输入以下命令退出 MySQL 客户端: ```sql exit; ``` 然后关闭当前的 `mysqld` 进程,并正常启动 MySQL 服务: ```bash net start mysql ``` #### 方法二:使用初始化文件重置密码 1. **创建一个包含修改密码命令的文本文件** 创建一个名为 `reset_password.sql` 的文件,并在其中写入以下内容: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; ``` 2. **启动 MySQL 并指定初始化文件** 使用 `--init-file` 参数启动 MySQL 服务: ```bash mysqld_safe --init-file=/path/to/reset_password.sql & ``` 3. **登录 MySQL 验证新密码** 使用新的密码尝试登录 MySQL: ```bash mysql -u root -p ``` #### 方法三:使用空密码登录并更改密码(仅限特定配置) 1. **设置 root 用户为空密码** 如果之前已经将 `root` 用户的密码设置为空,可以直接登录: ```bash mysql -u root ``` 2. **更改密码** 登录成功后,使用以下命令更改密码: ```sql ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword'; ``` 3. **刷新权限** 确保更改立即生效: ```sql FLUSH PRIVILEGES; ``` --- ### 注意事项 - 操作过程中需要管理员权限,尤其是在 Windows 上启动 `mysqld` 时。 - 修改完成后务必重启 MySQL 服务以恢复正常运行状态。 - 在生产环境中,建议定期备份 `mysql.user` 表或记录 `root` 用户的密码,防止遗忘。 - 不同版本的 MySQL密码管理的支持略有差异,请根据具体版本选择合适的命令。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值