MySQL的賬戶創建與權限分配(賬戶管理)

 

目錄

一、創建帳號與授權

二、回收權限

三、修改賬戶密碼

四、刪除賬號

五、賬號資源限制

六、刷新權限


  • MySQL使用用戶名+IP作爲用戶(即相同的用戶名,從不同的IP連接,被視爲不同的用戶)
  • 用戶在登錄時,進行相應的權限賦予,在此權限下操作。
  • 權限表在啓動的時候載入內存。
select * from mysql.user;       # 用戶的全局權限
select * from mysql.db;	        # 用戶的數據庫權限
select * from mysql.host;	# 主機的數據庫權限,新版已棄用。
select * from mysql.tables_priv;	# 用戶的表權限
select * from mysql.columns_priv;	# 用戶的列權限
  • 權限的順序:user->db->tables_priv->columns_priv(即user表存在相應的權限,則不再檢查後續的權限表。)
# 查看指定用戶的權限
show grants for 'jangle'@'%'; 
select * from information_schema.schema_privileges where GRANTEE = "'jangle'@'%'";

一、創建帳號與授權

# 創建用戶與授權
GRANT priv_type [(column_list)][,priv_type[(column_list)]] ...
ON [objcect_type] {tbl_name|*|*.*|db_name.*}
TO user_name@_host [IDENTIFIED BY [PASSWORD] 'password'] 
[WITH GRANT OPTION]
# 創建用戶與授權(選項說明)
priv_type = USAGE|SELECT|UPDATE|DELETE|INSERT|CREATE|ALTER|DROP|INDEX|ALL PRIVILEGES... #登錄權限|查詢權限|更新權限|刪除權限|插入權限|創建庫表權限|修改庫表權限|刪除庫表權限|創建索引權限|全部權限|...
priv_type = super|process|file #管理權限。
object_type = TABLE|FUNCTION|PROCEDURE	#可選項
user_name@_host # 必填:用戶,mysql對於相同用戶名但不統的IP地址則視爲不同的用戶。即'jangle'@'%' 與 'jangle'@'localhost' 是2個用戶。
[IDENTIFIED BY [PASSWORD] 'password'] #可選項:如果進行密碼設置,則會同步進行用戶創建。否則若用戶不存在,會報錯。
[WITH GRANT OPTION] #可選項:該用戶是否能授予其他人這些權限。即權限的傳遞權。
# 創建用戶與授權(例子)
grant select,update,insert,delete on demo.* to 'jangle_demo_test'@'%' IDENTIFIED by '1' with grant option ;#創建用戶jangle_demo_test並授予demo數據庫【增刪改查】的權限,設置密碼爲1,且該用戶可以將【增刪改查】的權限授予其他用戶
grant select(id),update(mail_result) on demo.bs_mail to  'jangle_demo_test'@'%'; #給demo數據庫的bs_mail表的指定列授權。

二、回收權限

# 回收權限
REVOKE priv_type [(column_list)][,priv_type[(column_list)]]...
ON [object_type]{tbl_name|*|*.*|db_name.*}
FROM user[,user]...
# 回收權限(選項說明)
priv_type = SELECT|UPDATE|DELETE|INSERT|ALL PRIVILEGES|GRANT OPTION|... #查詢權限|更新權限|刪除權限|插入權限|所有權限|傳遞授權的權限|...
user[,user]... #可以同時回收多個用戶的權限
# 回收權限(例子)
REVOKE ALL PRIVILEGES,GRANT OPTION FROM 'jangle_demo_test'@'%';	#回收jangle_demo_test用戶的所有權限,以及授權傳遞的權限
REVOKE SELECT,UPDATE,DELETE,INSERT ON demo.* FROM 'jangle_demo_test'@'%';		#回收jangle_demo_test用戶在demo數據庫所有表的查詢,更新,刪除,插入權限。

三、修改賬戶密碼

# 修改賬戶密碼 ,有多種方式,推薦使用一下方式:
GRANT USAGE ON *.* TO 'jangle_demo_test'@'%' IDENTIFIED BY '2';	#明文密碼
GRANT USAGE ON *.* TO 'jangle_demo_test'@'%' IDENTIFIED BY PASSWORD '*E6CC90B878B948C35E92B003C792C46C58C4AF40'; #版本不同用的密文不一樣
SET PASSWORD = PASSWORD('2');	#設置自己的密碼
SET PASSWORD = '*E6CC90B878B948C35E92B003C792C46C58C4AF40'; #密文設置,設置自己的密碼

四、刪除賬號

# 刪除用戶
DROP USER 'jangle_demo_test'@'%';

五、賬號資源限制

# 帳號資源限制
GRANT SELECT ON 'jangle_demo_test'@'%' WITH {MAX_QUERIES_PER_HOUR|MAX_UPDATES_PER_HOUR|MAX_CONNECTIONS_PER_HOUR|MAX_USER_CONNECTIONS} count;
# MAX_QUERIES_PER_HOUR :每小時最大查詢次數。
# MAX_UPDATES_PER_HOUR :每小時最大更新次數。
# MAX_CONNECTIONS_PER_HOUR :每小時最大連接次數。
# MAX_USER_CONNECTIONS :最大用戶連接數(最大併發數)。
# count : 數字,次數。
# root使用 FLUSH USER_RESOURCES|FLUSH PRIVILEGES|mysqladmin reload 可將累計的次數清零。

六、刷新權限

# 刷新權限 當通過對數據表進行直接操作時,需要刷新內存中的權限。
FLUSH PRIVILEGES;  # 該刷新操作還會重置資源限制的次數。

 

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