暂无图片
暂无图片
6
暂无图片
暂无图片
暂无图片

mysql忘记root密码 - 几个实战技巧

原创 金同学 2023-05-19
491

如果你忘记了 MySQL 的 root 密码,可以按照以下步骤进行重置:

1、停止 MySQL 服务。

sudo systemctl stop mysql

2、启动 MySQL 服务并跳过授权认证。

sudo mysqld_safe --skip-grant-tables &

注意:在 Windows 上,你需要在命令提示符下使用以下命令启动 MySQL 服务:

"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld" --skip-grant-tables

3、连接到 MySQL 服务。

在新的终端窗口中,使用以下命令连接到 MySQL 服务:

mysql -u root

4、更改 root 用户的密码。

使用以下命令更改 root 用户的密码:

<1> mysql5.6
update mysql.user set password=password('new_password') where user='root' and Host ='localhost';
<2> mysql5.7
UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
<3> mysql8.0
#创建一个包含密码分配语句的文本文件
vi /home/mysql/mysql-init
ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';
#指定init_file启动服务
sudo mysqld_safe --init-file=/home/mysql/mysql-init &

 将new_password替换为你要设置的新密码。

5、刷新权限表并退出 MySQL。

FLUSH PRIVILEGES;

6、重启mysql服务并使用新密码登录

#注,启动前,去掉skip-grant-tables参数
sudo systemctl restart mysql

注意:按照以上流程,我们在某些分支和版本无法重置成功!!!

#执行以下命令报错,提示语法错误,这个因为在某些8.0版本或者其他mysql分支移除了password函数,导致无法修改
update mysql.user set authentication_string=password('123456') where user='root' and Host ='localhost'; 
方法1:依次执行下面命令进行修改flush privileges;alter user root@'localhost' identified with mysql_native_password by '123456'; 方法2:置空密码密码串,然后重启后会免密进入update mysql.user set authentication_string='' where user='root' and Host ='localhost';

生产环境MGR忘记root密码,不停机修改方法

第1步:随记重置一个备节点

随记选择一个secondary节点,执行stop group_replication退出mgr。退出以后,该节点GTID值就不会变化了,此时执行show master status记录当前的GTID。

#退出复制组
stop group_replication;
#获取当前GTID
show master status;   #假设获取当前gtid: 'f7dbe843-ee62-4833-9c8a-dc03f8762d20:1-100'

第2步:重置密码,并修改gtid,然后加入复制组

重置密码:略
#启动服务后,查看show master status;发现生成了本机新的GTID,导致无法加入复制组。
reset master;
SET @@GLOBAL.GTID_PURGED='f7dbe843-ee62-4833-9c8a-dc03f8762d20:1-100';
#再次启动复制组
start group_replication;
select * from performance_schema.replication_group_members;

第3步:将该节点切换为primary,然后再次修改密码(binlog会自动同步到其他备节点,意味着mgr所有节点密码修改完成)

#将该节点设置为primary
SELECT group_replication_set_as_primary('member_uuid'); #再次执行重置root密码的命令,密码就会自动同步到mgr其他节点 ALTER USER 'root'@'localhost' IDENTIFIED BY '123456';



最后修改时间:2023-05-22 21:25:15
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

文章被以下合辑收录

评论