控制台建立的帳號授權後預設是可以管理整個資料庫,如果只想要帳號管理資料庫中的某個表、視圖、欄位,可以通過SQL命令進行授權。
前提條件
建立高許可權帳號。操作步驟
- 通過命令列、用戶端串連RDS MySQL執行個體。
- 通過以下命令建立新使用者並授權管理資料庫下的表、視圖、欄位:說明 此帳號在控制台上無法查看到所屬資料庫。
- 建立新使用者並授權管理資料庫中的表
CREATE USER `<使用者名稱>`@`%`IDENTIFIED BY '<密碼>'; GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO '<使用者名稱>'@'%'; GRANT ALL PRIVILEGES ON `<資料庫名>`.`<表名>` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`help_topic` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`func` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`time_zone` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`slow_log` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`time_zone_transition` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`proc` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`help_category` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`help_relation` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`help_keyword` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`general_log` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`time_zone_leap_second` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`time_zone_transition_type` TO '<使用者名稱>'@'%'; GRANT SELECT ON `mysql`.`time_zone_name` TO '<使用者名稱>'@'%';
樣本
建立新使用者test01並授權管理資料庫rds001中的表test100。
CREATE USER `test01`@`%`IDENTIFIED BY 'passwd'; GRANT PROCESS, REPLICATION SLAVE, REPLICATION CLIENT ON *.* TO 'test01'@'%'; GRANT ALL PRIVILEGES ON `rds001`.`test100` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`help_topic` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`func` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`time_zone` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`slow_log` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`time_zone_transition` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`proc` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`help_category` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`help_relation` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`help_keyword` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`general_log` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`time_zone_leap_second` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`time_zone_transition_type` TO 'test01'@'%'; GRANT SELECT ON `mysql`.`time_zone_name` TO 'test01'@'%';
說明 如果將命令第三行的test100更改為*,就和通過控制台建立的帳號一樣了,也可以在控制台看見此帳號的所屬資料庫。 - 授權查詢資料庫中的視圖
grant select on <資料庫名>.<視圖名> to <使用者名稱>;
樣本
授權使用者test01查詢資料庫rds001的視圖view_test1。
grant select on rds001.view_test1 to test01;
- 授權更新或查詢表中的欄位
grant update (<欄位名>) on table <表名> to <使用者名稱>; -----授權更新表中欄位 grant select (<欄位名>) on table <表名> to <使用者名稱>; -----授權查詢表中欄位
樣本
授權使用者test01更新表testtable的欄位testid。
grant update (testid) on table testtable to test01;
除了通過SQL命令,也可以在DMS上進行修改。詳情請參見MySQL資料庫帳號許可權管理。 - 建立新使用者並授權管理資料庫中的表