Linux mysql忘记密码找回
背景
今有一朋友说把数据库密码忘记了,准备卸载了重装,我一听完全可以找回密码,没必要重装。于是他就把服务器信息给我了。服务环境是:centOS 7,mysql5.6
话不多说,直接干货走起~
实现步骤
- 检查mysql是否启动,启动则停止mysql服务
ps -ef | gre mysql
停止mysql服务
service mysqld stop
-
修改mysql配置文件my.cnf
在此处加上:skip-grant-tables
此处多说两句Linux命令:vi命令之后
i – 键入可操作
esc-- 退出可操作,esc后 :wq表示保存 q!表示不保存 -
重启mysql
service mysqld start
- 进入mysql数据库
mysql -u root
区分一下:mysql -u root -p --- 需要输入密码访问
- 切换数据库
use mysql
继续运行:UPDATE user SET Password = Password('new_pwd' ) WHERE User = 'root';
说明一下:今天老白在网上找到的这个执行语句普遍是提供的:update mysql.user set authentication_string=password(‘new_pwd’) where user=‘root’; 尝试了两次还是不行,后面用连接工具看了一下mysql库下的user表,对比字段才发现了问题。
有兴趣的可尝试看一下是否可以直接使用Password函数获取加密信息,强行修改user表信息
- 把步骤二中添加的东西删除,重启mysql服务,测试使用刚才修改的密码是否可以进入
mysql -u root -p
- 说一句后话:开始连接的时候我发现服务器上mysql服务是启动的,在服务器内部使用mysql命令也没有任何问题,唯独使用连接工具不能连接。于是猜测是防火墙问题,补充几个Linux防火墙命令。
firewall-cmd --zone=public --remove-port=8080/tcp --permanent -- 移除端口
firewall-cmd --zone=public --add-port=9090/tcp --permanent -- 新增开放端口
systemctl restart firewalld.service -- 防火墙重启
本次技术分享到此结束,如有不当之处,欢迎大家留言指正。