恢复Root用户的所有权限

Root用户无法授权其他用户

通过Shell登录Mysql(5.6.30),创建远程账户,授权用户权限 (失败) 。

mysql -uroot -p

> 输入密码
mysql> use mysql;
mysql> create user user01@'%' identified by 'password' ##创建远程用户 user01
mysql> grant all privileges on myDB.* to user01; ##授权 user01 操作 myDB(需要操作的数据库) 所有权限

一般情况下执行完上述代码,创建远程账户和授权远程账户就会执行成功 . (但是这次报错了)

root无法授权其他用户

1 、Root授权报错

注意 :
这并不是密码登录的时候报错, 需要你进行修改密码 。 所以你查询这个错误是容易误导的。百度给出答案的都是让你修改密码 。这时候你要考虑为什么执行 grant 命令会报错 ?

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

2、 查看当前账户

select current_user(); ##查看当前用户 或 select user();

确保当前登录的用户是root , 而非其他没有权限的用户

3、查看 Root用户 Grant权限

show grants;

注意箭头位置 , 当前root的权限并不是所有权限 ( ALL PRIVILEGES )
而是单个组合起来的权限 , 所以当前root不能给其他用户赋予 all 的权限

修复 Root用户的所有权限

1、停止Mysql

service mysql status;  ##查看mysql状态
service mysql stop;    ##停止mysql

2、跳过Mysql权限验证登录

> mysqld_safe --skip-grant-tables &
> mysql

或者直接连起来执行 (linux下忘记Mysql密码可以通过此方式进入Mysql修改密码)
> mysqld_safe --skip-grant-tables &mysql

3、手动修改用户的权限 (使其可以设置权限)

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

4、刷新系统权限

FLUSH PRIVILEGES;

5、授权ROOT所有权限

GRANT ALL ON *.* TO 'root'@'localhost';  ##授权 root 所有权限

6、查看用户权限

select * from mysql.user\G    ##\G表示竖着排列查看

就此 ! Root 所有权限已修复完成。 也可以通过 show grants 查看。

修复ROOT所有权限

可以授权其他账户啦

GRANT ALL ON *.* TO 'user01'@'%';  ##授权 user01 所有权限

授权其他用户权限

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章