之前一直以为 MySQL 中如果忘记了 root 账号的密码,只有一种解法: -skip-grant-tables
。
相对于 skip-grant-tables
方案,我们来看看另外一种更优雅的解法,其只会重启一次,且基本上不存在安全隐患。
首先是关闭实例
其次,创建一个sql文件,并写上密码修改语句:
# vim init.sql
alter user 'root'@'localhost' identified by '123456';
最后,使用 --init-file
参数,启动实例
# bin/mysqld_safe --defaults-file=my.cnf --init-file=/usr/local/mysql57/init.sql &
实例启动成功后,密码即修改完毕。
如果mysql实例是通过服务脚本来管理的,除了创建sql文件,整个操作可简化为一步。
# service mysqld restart --init-file=/usr/local/mysql57/init.sql
注意:该操作只适用于/etc/init.d/mysqld
这种服务管理方式,不适用于 RHEL 7 新推出的 systemd
。