云数据库 SQL Server 的权限主要分为三种,即普通权限账号、高级权限账号以及特殊权限账号,不同的权限在功能上也有不同。本文为您介绍账号权限和权限控制实践。
权限分类及说明
普通权限账号:普通权限账号可以根据业务需求赋予单个业务库的读或者写相关权限。
高级账号权限:高级权限账号会赋予所有业务库的 dbowner 权限,一个实例只能创建一个高级权限账号。
特殊权限账号:特殊权限账号可赋予一些特殊操作的权限,比如查看 errorlog,为特殊权限账号指定能访问的数据库等。
创建不同权限的账号
1. 登录 SQL Server 控制台,找到目标实例。
2. 在实例管理页面,选择账号管理 > 创建账号,在弹出的对话框填写相关信息,确认无误后单击确定。
说明:
权限控制
目前云数据库 SQL Server 控制台开放的权限粒度到表级别,如果有更精细的权限控制需求,可以使用高级权限账号通过 SSMS 工具连接到实例来进行操作。
步骤1:创建高级权限账号
步骤2:通过 SSMS 连接到 SQL Server 实例
通过 SSMS 连接到 SQL Server 实例,然后就可以执行更细粒度的权限控制操作。连接实例的详细步骤请参见 通过控制台开启外网地址在本地通过 SSMS 连接到 SQL Server 实例,需注意在登录 SSMS 时,需要使用创建的高级权限账号和密码。

步骤3:通过命令授权
说明:
实际使用下面的命令时,请替换为实际的字段信息:
<表名>:请将 <表名> 替换为实际的名称。
<账号名>:请将 <账号名> 替换为实际的名称。
<权限>:请将 <权限> 替换为实际的 SQL。
示例:授予单张表权限
GRANT SELECT ON <表名> TO <账号名>;--GRANT UPDATE ON <表名> TO <账号名>;--GRANT INSERT ON <表名> TO <账号名>;--GRANT DELETE ON <表名> TO <账号名>;
表示授予 <账号名> 对 <表名> 的查询或更新或插入或删除权限。
示例:授予某张表的某些字段权限
GRANT SELECT(col1,col2,col3) ON <表名> TO <账号名>;
表示授予 <账号名> 对 <表名> 的部分列(col1, col2, col3)的查询权限。
示例:授予存储过程或视图权限
GRANT EXEC TO <账号名>;--GRANT CREATE VIEW TO <账号名>;
上面那行命令表示授予 <账号名> 执行存储过程(Stored Procedures)的权限。
下面那行命令表示授予 <账号名> 在当前数据库中创建视图的权限。
示例:回收授予的精细粒度的权限
REVOKE <权限> TO <账号名>;--例如:REVOKE CREATE VIEW TO <账号名>;