linux mysql 忘记密码 使用skip-grant-tables重置密码

本文介绍如何通过修改my.cnf配置文件绕过MySQL密码,重置root用户密码,并调整用户权限。涉及skip-grant-tables配置项的使用,以及在不同场景下更新root用户Host字段的方法。

/etc/my.cnf 文件中在mysqld节点下新增一行代码(表示跳过密码直接登入mysql):

skip-grant-tables

修改my.cnf后重启mysql,并使用mysql命令登入数据库:

cd /usr/local/mysql-5.7.26/support-files/

./mysql.server restart

cd /usr/local/mysql-5.7.26/bin/

./mysql

先重载授权表,再执行修改密码语句:

-- 重载授权表 

FLUSH PRIVILEGES;

-- 修改密码(版本不同,修改的语句不同)

ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';

 

执行成功后,将my.cnf中新增的skip-grant-tables删除或注释

然后重启mysql,尝试账号密码登录:

cd /usr/local/mysql-5.7.26/support-files/

./mysql.server restart

进入bin 执行进入mysql命令行,root用户登录: 输入密码 进入命令行

cd /usr/local/mysql-5.7.41/bin/

./mysql -uroot -p 

注意:

如果执行修改命令报错:ERROR 1396 (HY000): Operation ALTER USER failed for 'root'@'localhost',那么就进入mysql库下查看user表中root用户对应的Host是什么,然后参考截图执行修改(我这里是因为服务器开通了mysql对外访问权限,所以修改过root用户的Host):

这里修改mysql库的user表中  root用户的 host为 %  。

FLUSH PRIVILEGES; 

update user set host = '%' where host = 'localhost' and user = 'root';

### 如何在 Windows 上通过 `mysqld --skip-grant-tables` 重置 MySQL root 密码 对于 Windows 用户来说,当忘记MySQL 的 root 密码时,可以通过设置 MySQL 跳过权限表的方式重新获取访问权并更改密码。然而需要注意的是,在某些较高版本如 MySQL 8.0 中,传统的仅使用 `--skip-grant-tables` 参数的方法可能不再有效[^2]。 #### 方法一:适用于较低版本(如5.7) 停止当前正在运行的 MySQL 服务: ```bash net stop mysql ``` 启动 MySQL 并跳过授权表验证以及禁用网络连接防止远程攻击风险: ```bash mysqld --skip-grant-tables --skip-networking & ``` 此时打开另一个命令提示符窗口登录到 MySQL 数据库中执行更新语句修改 root 用户密码: ```sql FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY '新密码'; ``` 最后重启 MySQL 服务使新的配置生效: ```bash net start mysql ``` #### 方法二:针对高版本(例如8.0及以上) 考虑到 `--skip-grant-tables` 可能在较新版中存在兼容性问题[^4],建议采用如下方式处理: 同样先终止现有 MySQL 进程: ```bash net stop mysql ``` 接着以管理员身份运行 CMD 或 PowerShell 输入下面指令开启带有共享内存支持的服务实例: ```bash mysqld --console --skip-grant-tables --shared-memory ``` 之后再次进入 MySQL 客户端界面完成相同的操作流程即刷新权限和改变 root 密码。 值得注意的一点是在此过程中可能会遇到错误提示 "ERROR: The MySQL server is running with the --skip-grant-tables option so it cannot execute" ,这是因为处于安全考虑下的设计所致,因此只需忽略该警告继续后续操作即可。 为了确保能够顺利完成上述过程中的每一步骤,请务必确认所使用MySQL 版本号,并参照官方文档调整具体细节差异。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值