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控制台指定的用户身份登录):
- 创建登录。保持“服务器角色”为“公共”。
- 在用户映射选项卡下,将新创建的登录映射到您所需的特定数据库。选择“db_owner”作为角色。我通常只是将默认模式保留为dbo,但这取决于您。
答
试试这个SQL命令:
CREATE USER [MyUSER] FOR LOGIN [MyUser] WITH DEFAULT_SCHEMA=[dbo]
这似乎是'WITH DEFAULT_SCHEMA = [DBO]'的把戏一样。谢谢! –