为了账号安全,请及时绑定邮箱和手机立即绑定

如何恢复MySQL root用户的全部权限?

如何恢复MySQL root用户的全部权限?

12345678_0001 2019-10-16 10:56:55
我不小心从MySQL根用户中删除了某些特权,包括更改表的能力。有什么方法可以将用户恢复为原始状态(具有所有特权)?UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root';# MySQL returned an empty result set (i.e. zero rows).FLUSH PRIVILEGES ;# MySQL returned an empty result set (i.e. zero rows).#1045 - Access denied for user 'root'@'localhost' (using password: YES)GRANT ALL ON *.* TO 'root'@'localhost'
查看完整描述

3 回答

?
慕标5832272

TA贡献1966条经验 获得超4个赞

如果GRANT ALL不起作用,请尝试:

  1. mysqld使用该--skip-grant-tables选项停止并重新启动它。

  2. mysqld只需使用以下命令即可连接到服务器:(mysql即无-p选项,并且可能不需要用户名)。

  3. 在mysql客户端中发出以下命令:

    UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';

    FLUSH PRIVILEGES;

之后,您应该可以运行GRANT ALL ON *.* TO 'root'@'localhost';并运行它。


查看完整回答
反对 回复 2019-10-16
?
智慧大石

TA贡献1946条经验 获得超3个赞

如果您误删除了root用户,则可以做一件事:


停止MySQL服务

跑 mysqld_safe --skip-grant-tables &

类型mysql -u root -p,然后按回车。

输入密码

在mysql命令行中输入: use mysql;

然后执行以下查询:


insert into `user` (`Host`, `User`, `Password`, `Select_priv`, `Insert_priv`, `Update_priv`, `Delete_priv`, `Create_priv`, `Drop_priv`, `Reload_priv`, `Shutdown_priv`, `Process_priv`, `File_priv`, `Grant_priv`, `References_priv`, `Index_priv`, `Alter_priv`, `Show_db_priv`, `Super_priv`, `Create_tmp_table_priv`, `Lock_tables_priv`, `Execute_priv`, `Repl_slave_priv`, `Repl_client_priv`, `Create_view_priv`, `Show_view_priv`, `Create_routine_priv`, `Alter_routine_priv`, `Create_user_priv`, `ssl_type`, `ssl_cipher`, `x509_issuer`, `x509_subject`, `max_questions`, `max_updates`, `max_connections`, `max_user_connections`) 

values('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0');

然后重启mysqld


万一其他人需要这个答案,我今天使用innodb_version 5.6.36-82.0和10.1.24-MariaDB进行了尝试,如果您删除了反引号,它也可以工作(也没有单引号,只需删除它们):


insert into user (Host, User, Password, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv, Create_view_priv, Show_view_priv, Create_routine_priv, Alter_routine_priv, Create_user_priv, ssl_type, ssl_cipher, x509_issuer, x509_subject, max_questions, max_updates, max_connections, max_user_connections) 

values('localhost','root','','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','Y','','','','','0','0','0','0');


查看完整回答
反对 回复 2019-10-16
?
BIG阳

TA贡献1859条经验 获得超6个赞

我还删除了我作为root用户时未显示在mysql控制台中的root和数据库特权,因此更改了用户名 mysql>mysql -u 'userName' -p;和密码;


UPDATE mysql.user SET Grant_priv='Y', Super_priv='Y' WHERE User='root';


FLUSH PRIVILEGES;

在此命令之后,所有命令都显示root的数据库。


查看完整回答
反对 回复 2019-10-16
  • 3 回答
  • 0 关注
  • 1317 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信