控制台创建的账号授权后默认是可以管理整个数据库,如果只想要账号管理数据库中的某个表、视图、字段,可以通过SQL命令进行授权。
前提条件
操作步骤
- 连接MySQL实例。
- 通过以下命令创建新用户并授权管理数据库下的表、视图、字段:
说明 此账号在控制台上无法查看到所属数据库。
- 创建新用户并授权管理数据库中的表 1234567891011121314151617
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`.`event` 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。
1234567891011121314151617CREATE 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`.`event` 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更改为 *,就和通过控制台创建的账号一样了,也可以在控制台看见此账号的 所属数据库。 - 授权查询数据库中的视图 1
grant select on <数据库名>.<视图名> to <用户名>;
示例
授权用户test01查询数据库rds001的视图view_test1。
1grant select on rds001.view_test1 to test01;
- 授权更新或查询表中的字段 12
grant update (<字段名>) on table <表名> to <用户名>; -----授权更新表中字段
grant select (<字段名>) on table <表名> to <用户名>; -----授权查询表中字段
示例
授权用户test01更新表testtable的字段testid。
1grant update (testid) on table testtable to test01;
除了通过SQL命令,也可以在DMS上进行修改。详情请参见 MySQL数据库账号权限管理。 - 创建新用户并授权管理数据库中的表