限制子账户只能看到具有权限的数据库清单 本节介绍了限制子账户只能看到具有权限的数据库清单的相关内容。 操作场景 使用存储过程,将某个自定义数据库的权限授予由rdsuser账户创建的指定子账户,并限制该账户对其他数据库的可见性。限制之后,子账户对不具权限的数据库不可见,也无法对其进行相关操作。 前提条件 成功连接RDS for SQL Server实例。关于连接关系型数据库实例, 约束 对于系统库,不可通过此存储过程进行授权给子账户。如果您试图为子账户授予系统库权限,系统将会有如下提示: plaintext Error DatabaseName. Please can not include in ('msdb','master','model','tempdb','rdsadmin') . 对于系统管理员账户,不可通过此存储过程进行授权。如果您试图为管理员账户授予任意数据库权限,系统将会有如下提示: plaintext Error Login. Please can not include in ('rdsadmin','rdsmirror','rdsbackup','rdsuser') . 若某个账户已经是指定数据库的用户,不可再通过此存储过程对该账户授予该数据库的权限。否则,系统将会有如下提示: plaintext The proposed new database owner is already a user or aliased in the database. 这种情况下,您可以通过管理账户“rdsuser”将该子账户从该数据库中删除之后,再通过执行此存储过程进行授权。 若某个账户具有Create Any Database权限,则此存储过程对该账户不生效。 操作步骤 执行以下命令,进行限制子账户查看数据库权限。 EXEC rdsadmin.dbo.rdsAUTHORIZATIONDatabaseForLogin ‘@DBName’, ‘@Login’; @ DBName:要授予权限的数据库。 @ Login:要授予权限的账户。 为“user1”账户授予数据库“testDB1”的权限,示例如下: EXEC rdsadmin.dbo.rdsAUTHORIZATIONDatabaseForLogin ‘testDB1’, ‘user1’; 授权成功之后,user1将具备testDB1的权限,对其可见并可对其进行操作;并且对其余无权限数据库保持不可见且不可操作。