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 所有權限