mysql里guest用户_MySQL用户权限分配
mysql> grant 權限1,權限2,…權限n on 數據庫名稱.表名稱 to 用戶名@用戶地址 identified by ‘連接口令’;
權限1,權限2,…權限n代表select,insert,update,delete,create,drop,index,alter,grant,references,reload,shutdown,process,file等14個權限。當權限1,權限2,…權限n被all privileges或者all代替,表示賦予用戶全部權限。
當數據庫名稱.表名稱被*.*代替,表示賦予用戶操作服務器上所有數據庫所有表的權限。
用戶地址可以是localhost,也可以是ip地址、機器名字、域名。也可以用’%'表示從任何地址連接。
‘連接口令’不能為空,否則創建失敗。
增加新用戶
格式:grant 權限 on 數據庫.* to 用戶名@登錄主機 identified by "密碼"
如,增加一個用戶user1密碼為password1,讓其可以在本機上登錄, 并對所有數據庫有查詢、插入、修改、刪除的權限。首先用以root用戶連入mysql,然后鍵入以下命令:
grant select,insert,update,delete on *.* to user1@localhost Identified by "password1";
如果希望該用戶能夠在任何機器上登陸mysql,則將localhost改為"%"。
如果你不想user1有密碼,可以再打一個命令將密碼去掉。
grant select,insert,update,delete on mydb.* to user1@localhost identified by "";
MySQL的權限系統圍繞著兩個概念:
1:認證->確定用戶是否允許連接數據庫服務器
2:授權->確定用戶是否擁有足夠的權限執行查詢請求等。
顯然從上面可知,如果認證不成功的話,哪么授權肯定是無法進行的。在這里我們要關注兩個表,分別是在MySQL數據庫中user表和db表。
user表在某種程度上是獨一無二的,因為它是唯一一個在權限請求的認證和授權階段都起作用的表,也是唯一一個存數MySQL服務器相關權限的權限表。在認證階段,它只是負責為用戶授權訪問MySQL服務器,確定用戶每小時的最大連接數和最大并發數;在授權階段,user確定允許訪問服務器的用戶是否被賦予了操作數據庫的全局權限,確定用戶每小時的最大查詢數和更新數。
db表用于為每個用戶針對每個數據庫賦予權限。具體的可以查看db的字段。
用戶和權限管理命令:
create user :用于創建新的用戶賬戶(從5.0版本開始有這個命令),在創建這個用戶的時候不分配任何權限,需要在創建之后通過grant命令來給改用戶分配相應的權限。
eg:create user guest@localhost identified by '123456';
grant select on mydb.* to guest@localhost;
drop user:刪除一個用戶賬戶(注意在4.1.1版本之前只能刪除沒有任何權限的賬戶,5.0.2之后可以刪除任何賬戶)
eg:drop user guest;
rename user:可以實現重命名一個用戶賬號。
grant:用于管理訪問權限,也就是給用戶賬號授權。當然它同樣可以創建一個新的用戶賬戶。
eg:grant select, insert, update, delete on new_db.* to guest@'%' identified by '88888888';
grant 權限 on 數據庫.表 to 用戶 @ 訪問方式 identified by 密碼
grant select on mydb.* to guest@localhost identified by '123456';
BTW:如果需要一個空密碼或者無密碼的賬戶,必須先用Create User命令,然后通過
grant來分配權限。如果如下操作:
grant all privileges on mydb.* to visitor@'%' ;而在數據庫user表中沒有先創建visitor
用戶,則會發生1133錯誤"Can't find any matching row in the user table"。grant只能創
有密碼的賬戶。
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的mysql里guest用户_MySQL用户权限分配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql主从 percona_mysq
- 下一篇: linux cmake编译源码,linu