sql之AWS RDS 为数据库创建用户
我有一个在 AWS 中启动的 RDS 实例,运行 SQL Server 2012。我能够正常登录和创建新数据库(通过 SSMS 和 sqlcmd.exe)。
我面临的问题是,由于在 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 的实际预期行为吗?
请您参考如下方法:
我没有使用 sp_addlogin 为用户创建登录名。我是这样做的,而且奏效了。
CREATE LOGIN userName WITH PASSWORD = 'y0urPa$$w0rd'
那我可以做
CREATE USER userName FOR LOGIN userName WITH DEFAULT_SCHEMA=dbo
请务必注意 sp_addlogin 将很快在 SQL Server 的 future 版本中删除。
This feature will be removed in a future version of Microsoft SQL Server. Avoid using this feature in new development work, and plan to modify applications that currently use this feature. Use CREATE LOGIN instead.
https://docs.microsoft.com/en-us/sql/relational-databases/system-stored-procedures/sp-addlogin-transact-sql?view=sql-server-2017
希望这可以帮助
1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。