更优雅的解法
相对于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。