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(需要操作的数据库) 所有权限
一般情况下执行完上述代码,创建远程账户和授权远程账户就会执行成功 . (但是这次报错了)
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 查看。
可以授权其他账户啦
GRANT ALL ON *.* TO 'user01'@'%'; ##授权 user01 所有权限