Stories

Detail Return Return

MySQL權限詳解 - Stories Detail

在MySQL中,權限管理是保障數據安全和合理使用的重要手段。MySQL提供了豐富的權限控制機制,允許管理員對不同用户授予不同級別的操作權限。本文將會對MySQL中的權限管理,以及內核如何實現權限控制進行介紹。

一、權限級別

MySQL 的權限是分層的,權限可以授予不同級別的對象:
全局權限: 作用於整個 MySQL 服務器實例的所有數據庫,授予全局權限的用户可以對服務器上的任何數據庫和對象進行操作,存儲在 mysql.user 表。

  • ALL PRIVILEGES:授予用户所有可用的權限。
  • CREATE:允許用户創建新的數據庫和表。
  • DROP:允許用户刪除數據庫和表。
  • ALTER:允許用户修改表結構,如添加、刪除列等。
  • INDEX:允許用户創建和刪除索引。
  • GRANT OPTION:允許用户將自己擁有的權限授予其他用户。

數據庫權限: 作用於特定數據庫(或匹配模式的所有數據庫)中的所有對象,存儲在 mysql.db 和 mysql.host 表(後者很少用)。

  • CREATE TEMPORARY TABLES:允許用户在指定數據庫中創建臨時表。
  • SHOW VIEW:允許用户查看指定數據庫中視圖的定義。
  • CREATE ROUTINE:允許用户在指定數據庫中創建存儲過程和函數。
  • ALTER ROUTINE:允許用户修改指定數據庫中存儲過程和函數的定義。
  • EXECUTE:允許用户執行指定數據庫中的存儲過程和函數。

表權限: 作用於特定表(或匹配模式的所有表)中的所有列,存儲在 mysql.tables_priv 表。

  • SELECT:允許用户從表中查詢數據。
  • INSERT:允許用户向表中插入新數據。
  • UPDATE:允許用户修改表中的數據。
  • DELETE:允許用户刪除表中的數據。
  • REFERENCES:允許用户創建外鍵關聯。

列權限: 作用於特定表中的特定列,存儲在 mysql.columns_priv 表。
可以針對表中的特定列授予 SELECTINSERTUPDATE 等權限,限制用户只能對指定列進行操作。
程序權限: 作用於存儲過程、存儲函數,存儲在 mysql.procs_priv 表。

  • PROCESS:允許用户查看所有正在執行的線程信息。
  • SHOW DATABASES:允許用户查看所有數據庫的列表。
  • RELOAD:允許用户重新加載權限表和刷新日誌。
  • SHUTDOWN:允許用户關閉 MySQL 服務器。

global、database、table、column、routines,控制層級示意圖:

權限管理操作

創建用户:

-- 創建一個新用户,用户名為 'test_user',密碼為 'test_password'
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'test_password';

授予權限:

GRANT privilege_type [(column_list)] [, privilege_type [(column_list)] ...]
ON [object_type] privilege_level
TO user_or_role [, user_or_role ...]
[WITH GRANT OPTION]; -- 謹慎使用

查看權限:

SHOW GRANTS; -- 查看當前用户權限
SHOW GRANTS FOR 'username'@'host'; -- 查看指定用户權限
SELECT * FROM mysql.user WHERE User='username' AND Host='host'\G -- 查看 user 表信息 (謹慎)
SELECT * FROM mysql.db WHERE User='username' AND Host='host'\G -- 查看 db 表權限
-- 類似可以查看 tables_priv, columns_priv, procs_priv

撤銷權限:

REVOKE [GRANT OPTION FOR] privilege_type [(column_list)] [, privilege_type [(column_list)] ...]
ON [object_type] privilege_level
FROM user_or_role [, user_or_role ...];

參考文章:MySQL權限詳解

user avatar zdyz Avatar verd Avatar damenge Avatar niewj Avatar jimru Avatar ouysh1981 Avatar huopodeyaokongqi_c3jobz Avatar cloud11y Avatar chenzhuodegan_czbzv7 Avatar
Favorites 9 users favorite the story!
Favorites

Add a new Comments

Some HTML is okay.