一、前言
事情是这个样子的,由于某些原因我重启了我的 linux 服务器,结果重启完后,登陆不上 mysql 数据库了,一直告诉我某个错误,如下:
ERROR 2002 (HY000): Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)
然后我就开始上网寻找解决之道,经过各种操作,终于皇天不负有心人,我成功登陆了进去,但是我只能看到一个 information_schema 数据库,其它的任何操作我都干不了,也就是说我成功的把我的 root 用户超级权限给干没了,对,没错,root 用户超级权限没了。这下子我人麻了,好在,我最终还是解决掉了这个问题,所以记录一下我这次的悲惨故事和解决方法。
二、解决流程
1、关闭 mysql 服务
首先,我们需要先关闭我们的 mysql 服务,命令如下:
systemctl stop mysql
如果这个命令不行的话,那我们只能用暴力一点的手段了,命令如下:
#查看mysql进程
ps -ef | grep mysql
#干掉mysql进程
kill -9 13147
好了,如果出现上面的结果的话呢,那就证明我们成功的把 mysql 服务关闭了。
2、以屏蔽权限的方式启动 mysql
我们进入 mysql 安装目录的 bin 目录下敲入如下命令启动 mysql
./mysqld_safe --skip-grant-tables &
3、登陆数据库
mysql -u root mysql
use mysql;
show databases;
现在我们终于可以看到其它的库了(哭死!!!)
4、修改 root 用户权限
grant all privileges on *.* to 'root'@'%';
flush privileges;
exit;
这样子我们就重新给 root 用户赋予了超级用户的权限,如果你不喜欢这一种的话,可以选择下面这种
update user set select_priv=‘Y’,Insert_priv=‘Y’,Update_priv=‘Y’,Delete_priv=‘Y’,Create_priv=‘Y’,Drop_priv=‘Y’,Reload_priv=‘Y’,File_priv=‘Y’,Grant_priv=‘Y’,References_priv=‘Y’,Index_priv=‘Y’,Alter_priv=‘Y’,Show_db_priv=‘Y’,Super_priv=‘Y’,Create_tmp_table_priv=‘Y’,Lock_tables_priv=‘Y’,Execute_priv=‘Y’,Repl_slave_priv=‘Y’,Repl_client_priv=‘Y’,Create_view_priv=‘Y’,Show_view_priv=‘Y’,Create_routine_priv=‘Y’,Alter_routine_priv=‘Y’,Create_user_priv=‘Y’,Event_priv=‘Y’,Trigger_priv=‘Y’,Create_tablespace_priv=‘Y’
WHERE user=‘root’;
flush privileges;
exit;
这种也是可以的(ps:里面的 ‘ 和 ; 号可能是中文的,得自己换成英文,否则 sql 语句会执行不了哦)
5、重启 mysql 服务
停止 mysql
systemctl stop mysql
启动 mysql
systemctl start mysql
#你也可以进入mysql安装目录的 support-files 目录下执行该命令
./mysql.server start
好了,如此我们的 root 用户的超级权限就回来啦!!!
三、总结
以上就是我个人在 Mysql8 中 root 用户超级权限丢失后修改的整个流程,写完笔记之后,感觉更加流畅了,如果有什么问题,可以将问题发我邮箱 luodiab@126.com,欢迎各位的意见。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于