mysql用root用戶給其他用戶授權報錯1044 access denied for user root


公司本地測試數據庫一直使用root直接使用數據庫,一直使用沒問題

突然有一天,需要增加一個用戶,並使用該用戶進行操作數據庫

在成功創建新用戶后,開始想給用戶授予最高權限,結果報錯,1044 access denied for user root

我以為是無法創建同樣的root用戶

於是建了一個新數據庫,newdb ,單獨個新建用戶增加newdb的權限,還是報錯

最后,查看了一下,root自己的服務器權限,除了Grant option外其他權限都有,問題應該就在這里

解決辦法:登錄mysql服務器,本地登錄Mysql

執行命令:

1、 mysql -uroot -p

2、 usemysql

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

4、 FLUSH PRIVILEGES;

 

一、用戶授權
mysql> grant all privileges on *.* to 'yangxin'@'%' identified by 'yangxin123456' with grant option;

添加權限(和已有權限合並,不會覆蓋已有權限)

GRANT Insert ON `your database`.* TO `user`@`host`;

刪除權限

REVOKE Delete ON `your database`.* FROM `user`@`host`;


all privileges:表示將所有權限授予給用戶。也可指定具體的權限,如:SELECT、CREATE、DROP等。
on:表示這些權限對哪些數據庫和表生效,格式:數據庫名.表名,這里寫“*”表示所有數據庫,所有表。如果我要指定將權限應用到test庫的user表中,可以這么寫:test.user
to:將權限授予哪個用戶。格式:”用戶名”@”登錄IP或域名”。%表示沒有限制,在任何主機都可以登錄。比如:”yangxin”@”192.168.0.%”,表示yangxin這個用戶只能在192.168.0IP段登錄
identified by:指定用戶的登錄密碼
with grant option:表示允許用戶將自己的權限授權給其它用戶
可以使用GRANT給用戶添加權限,權限會自動疊加,不會覆蓋之前授予的權限,比如你先給用戶添加一個SELECT權限,后來又給用戶添加了一個INSERT權限,那么該用戶就同時擁有了SELECT和INSERT權限。

用戶詳情的權限列表請參考MySQL官網說明:http://dev.mysql.com/doc/refman/5.7/en/privileges-provided.html

二、刷新權限
對用戶做了權限變更之后,一定記得重新加載一下權限,將權限信息從內存中寫入數據庫。

mysql> flush privileges;


三、查看用戶權限
mysql> grant select,create,drop,update,alter on *.* to 'yangxin'@'localhost' identified by 'yangxin0917' with grant option;
mysql> show grants for 'yangxin'@'localhost';


四、回收權限
刪除yangxin這個用戶的create權限,該用戶將不能創建數據庫和表。

mysql> revoke create on *.* from 'yangxin@localhost';
mysql> flush privileges;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM