mysql找回root密码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql找回root密码相关的知识,希望对你有一定的参考价值。

skip-grant-tables
1、关闭mysql服务
略(可以kill,尽量别用kill -9)

2、参数启动mysql
bin/mysqld_safe --defaults-file=my.cnf --skip-grant-tables --skip-networking &
#在mysql8.0以skip-grant-tables选项启动,会自动启用--skip-networking
--skip-networking参数。其会让实例关闭监听端口,自然也就无法建立TCP连接,而只能通过本地socket进行连接。

3、更改密码
mysql -S /usr/local/mysql57/data/mysql.sock
5.6:
update mysql.user set password=password(123456) where host=localhost and user=root;
5.7:
update mysql.user set authentication_string=password(123456) where host=localhost and user=root;
8.0:
移除了PASSWORD()函数及不再支持SET PASSWORD ... = PASSWORD (auth_string)语法。
所以需要先通过flush privileges操作触发权限表的加载,再使用alter user语句修改root用户的密码
flush privileges;
alter user root@localhost identified by 123456;

4、刷新权限
flush privileges;

5、重启mysql
先关闭再重启
bin/mysqld_safe --defaults-file=my.cnf &

总结:
1. 如果只添加了--skip-grant-tables,修改完密码后,其实无需重启,执行flush privileges即可。
2. 从安全角度出发,建议加上--skip-networking。但因其是静态参数,将其剔除掉需要重启实例。
3. 加上--skip-networking,虽然可以屏蔽掉TCP连接,但对于本地其它用户,只要有socket文件的可读权限,都能无密码登录。还是存在安全隐患。
4. 不建议通过update的方式修改密码,更通用的其实是alter user。

以上是关于mysql找回root密码的主要内容,如果未能解决你的问题,请参考以下文章

Mysql忘记root密码,如何找回来呢?值得收藏

linux下找回mysql的root密码

mysql忘记root用户密码找回步骤

Mysql找回root密码

mysql忘记root用户密码找回步骤

[读书笔记]mysql 找回丢失的root密码