频道栏目
首页 > 资讯 > MySQL > 正文

mysql数据库密码忘记的情况如何重置root密码?

18-07-25        来源:[db:作者]  
收藏   我要投稿

很久没有玩数据库,果然又忘了mysql的root密码,一顿操作重置,啪啪啪一堆报错,记录一下。说明: mysql密码重置其实是修改数据库mysql下的user表中密码字段。

但是没有密码连接都连不上咋个整

一、启动安全+免验证模式

①关闭服务:

sudo service mysql stop

②安全模式+免验证启动服务

sudo /usr/bin/mysqld_safe --skip-grant-tables

如果顺利启动成功,那么可以调到第二步了。

当然我并不顺利,在这里遇到了报错:

mysqld_safe Directory '/var/run/mysqld' for UNIX socket file don't exists.

这里写图片描述

“/var/run/mysqld” 这个目录不存在?这个目录是干什么的?具体不详知,只知道在程序启动中会向这个目录读写一些东西。

解决方法:创建目录并修改权限。

sudo mkdir /var/run/mysqld
sudo chmod 777 /var/run/mysqld

再执行②启动mysql,启动成功~

这里写图片描述

二、连接服务器,修改密码

第一步执行成功后,就可以免验证连接服务器了。

①新开一个终端,连接服务器:

mysql -u root

用show databases; 查看数据库,发现服务器中会有好几个数据库:

这里写图片描述

在开头说过mysql的密码其实是保存在名为“mysql”的数据库中,所以切换到mysql数据库。

②切换到mysql数据库:

use mysql;

③修改密码

这里要根据版本来执行不同的SQL语句了,因为版本不同,存储密码的字段可能不相同。5.7以前的版本可以用以下语句更新root密码:

update user set password = password('123456') where user='root';

如果顺利的话,root的密码应该已经被修改为“123456”,那可以不必往下看了。

然而我的mysql版本是5.7.21,所以第一次尝试的时候这里又报错了:

ERROR 1054 (42S22): Unknown column 'password' in 'field list'

这里写图片描述

表中没有password字段,可以用desc user;指令看一下果然没有。

查资料发得知5.7版本密码保存字段已经改成上图中的“authentication_string”了,于是重新输入update指令重置密码:

update user set authentication_string = password('123456') where user='root';

这里写图片描述

修改成功!

三、重启mysql服务并连接

先杀死第一步中启动的进程,命令行Ctrl + Z 并不能杀死进程。

先查看进程:

ps -a | grep mysql

这里写图片描述

使用kill -9 pid 杀死进程,然后启动mysql服务即可。

sudo service mysql restart
mysql -u root -p

这里写图片描述

结束。

相关TAG标签
上一篇:学习spark架构的一些基本原理
下一篇:sparkshuffle应该如何调优
相关文章
图文推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站