mysql密码忘记如何重置root密码
很久没有玩数据库,果然又忘了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
结束。
「智能机器人开发者大赛」官方平台,致力于为开发者和参赛选手提供赛事技术指导、行业标准解读及团队实战案例解析;聚焦智能机器人开发全栈技术闭环,助力开发者攻克技术瓶颈,促进软硬件集成、场景应用及商业化落地的深度研讨。 加入智能机器人开发者社区iRobot Developer,与全球极客并肩突破技术边界,定义机器人开发的未来范式!
更多推荐



所有评论(0)