我如何恢复MySQL root用户的完整权限?

我不小心删除了我的MySQL root用户的一些权限,包括修改表的能力。 有什么方法可以将此用户恢复到原始状态(具有所有权限)吗?

UPDATE mysql.user SET Grant_priv = 'Y', Super_priv = 'Y' WHERE User = 'root'; # MySQL returned an empty result set (ie zero rows). FLUSH PRIVILEGES ; # MySQL returned an empty result set (ie zero rows). #1045 - Access denied for user 'root'@'localhost' (using password: YES) GRANT ALL ON *.* TO 'root'@'localhost' 

如果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'; 并有它的工作。

如果你错误地删除了root用户,你可以做一件事:

  1. 停止MySQL服务
  2. 运行mysqld_safe --skip-grant-tables &
  3. inputmysql -u root -p并按下回车键。
  4. input您的密码
  5. 在mysql命令行input: 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

我也删除根目录和数据库的权限不显示在mysql控制台当我是一个root用户,所以更改用户通过mysql>mysql -u 'userName' -p; 和密码;

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

在这个命令之后它都显示数据库的根目录。

谢谢

 GRANT ALL ON *.* TO 'user'@'localhost' with GRANT OPTION; 

只要使用相应的密码从rootlogin(如果有的话),并简单地运行上述命令,无论用户是什么。

例如:

 GRANT ALL ON *.* TO 'root'@'%' with GRANT OPTION; 

只需插入或更新每个列权限值为Y mysql.user

同上。

完整答案: http ://www.myee.web.id/?p = 869

我拒绝插入并重新加载到root权限。 所以在更新权限之后,FLUSH PRIVILEGES不起作用(由于缺乏重载权限)。 所以我在Ubuntu 16.04上使用debian-sys-maint用户来恢复user.root权限。 你可以从这个文件中finduser.debian-sys-maint的密码

 sudo cat /etc/mysql/debian.cnf