环境说明:
- mysql5.7.26
- mysql配置文件目录:/etc/my.cnf
- 采用的方式:mysql主从复制模式,同时使用半同步
今天登录mysql时,忘记了密码,想着强制修改密码。步骤如下:
1.修改/etc/my.cnf
在my.cnf文件中,添加如下内容。
vim /etc/my.cnf
#在[mysqld]下面添加如下两行
##########################################################################################
skip-grant-tables
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
##########################################################################################
解释:网上很多教程都是说只需添加skip-grant-tables,但是在我测试过程中,发现会报如下错误。
20190918 11:13:25 [ERROR] /usr/sbin/mysqld: unknown variable 'rpl_semi_sync_master_enabled=1'
20190918 11:13:25 [ERROR] Aborting
这个原因的介绍参看官网:https://dev.mysql.com/doc/refman/5.5/en/server-options.html#option_mysqld_plugin-load
2.重启mysql
执行Mysql重启命令,重启mysql
service mysql restart
3.重设mysql密码
登录Mysql,重设密码
#不用输入密码,直接回车
mysql -u root -p
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'localhost';
flush privileges;
exit;
4.删除/etc/my.cnf中刚加的语句
修改成功后,删除刚刚添加的语句
vim /etc/my.cnf
#删除在[mysqld]下面添加如下两行
##########################################################################################
skip-grant-tables
plugin-load="rpl_semi_sync_master=semisync_master.so;rpl_semi_sync_slave=semisync_slave.so"
##########################################################################################
5.重启mysql生效
按刚刚步骤重启mysql即可。