MySQL數據庫授權是指在MySQL中,將數據庫、表、列等資源的訪問權限授予指定的用戶或角色。
MySQL數據庫的授權語法如下:
GRANT priv_type [(column_list)] [, priv_type [(column_list)]] ... ON [object_type] priv_level TO user [auth_option] [, user [auth_option]] ... [WITH with_option ...] object_type: TABLE | FUNCTION | PROCEDURE priv_level: * | *.* | db_name.* | db_name.tbl_name | tbl_name priv_type: ALL [PRIVILEGES] | ALTER | CREATE | DELETE | DROP | INDEX | INSERT | SELECT | UPDATE | GRANT OPTION auth_option: IDENTIFIED BY 'password' | IDENTIFIED WITH plugin_name | WITHOUT AUTHENTICATION with_option: GRANT OPTION | MAX_QUERIES_PER_HOUR count | MAX_CONNECTIONS_PER_HOUR count | MAX_UPDATES_PER_HOUR count | MAX_USER_CONNECTIONS count
其中,priv_type表示授權類型,如 SELECT、INSERT、UPDATE、DELETE 等;priv_level表示授權級別,如 *.* 表示所有庫的所有表,db_name.* 表示指定庫的所有表等;user表示授權用戶,可以是一個具體的用戶名,也可以是一個角色等;WITH子句表示可選的附加選項,如 GRANT OPTION 表示授予授權的用戶可以將該權限授權給其他用戶等。
例如,我們可以使用如下語句,將 SELECT、INSERT、UPDATE、DELETE 權限授予 user1 用戶。
GRANT SELECT,INSERT,UPDATE,DELETE ON db_name.tbl_name TO 'user1'@'localhost' IDENTIFIED BY 'password';
除了授權之外,我們還可以使用 REVOKE 語句,將已有的授權權限回收。
REVOKE SELECT,INSERT,UPDATE,DELETE ON db_name.tbl_name FROM 'user1'@'localhost';