AWS RDS为数据库创建用户

问题描述:

我在AWS中运行了RDS实例,运行SQL Server 2012.我可以很好地登录并创建新的数据库(通过SSMS和sqlcmd.exe)。AWS RDS为数据库创建用户

我面临的问题是,由于在通过RDS创建过程设置“godmode”帐户时没有足够的权限,我无法为每个应用程序数据库创建用户。

我在此RDS实例上有> 5个应用程序及其数据库,并且要设置它以便每个应用程序都拥有自己的登录名,并且只是用户自己的数据库。

我可以创建登录名,但我不能将该登录名作为用户分配给数据库。这是不能做到的吗?我知道RDS有限制,但这看起来应该是可能的。我的用例不可能是独一无二的!

我试图建立用户像这样:

DECLARE @Username nvarchar(255) = 'test1'; 
DECLARE @Password nvarchar(255) = 'sUp3rS3crEt'; 

USE [Application1] 

IF NOT EXISTS 
    (SELECT name 
    FROM master.sys.server_principals 
    WHERE name = @Username) 
BEGIN 
    EXEC sp_addlogin @Username, @Password 
END 

BEGIN 
EXEC sp_adduser @Username, @Username, 'db_owner' 
END 

其失败的sp_adduser与

Msg 15247, Level 16, State 1, Procedure sp_adduser, Line 35 [Batch Start Line 0] 
User does not have permission to perform this action. 

尝试手动创建一个用户通过SSMS的权限问题也会失败。

这是RDS与Sql Server 2012的实际预期行为吗?

到目前为止,我从来没有尝试过通过SQL来做,但通过SSMS几次没有问题地完成它。请尝试以下操作(以前面在AWS RDS控制台指定的用户身份登录):

  1. 创建登录。保持“服务器角色”为“公共”。
  2. 在用户映射选项卡下,将新创建的登录映射到您所需的特定数据库。选择“db_owner”作为角色。我通常只是将默认模式保留为dbo,但这取决于您。

试试这个SQL命令:

CREATE USER [MyUSER] FOR LOGIN [MyUser] WITH DEFAULT_SCHEMA=[dbo] 
+0

这似乎是'WITH DEFAULT_SCHEMA = [DBO]'的把戏一样。谢谢! –