【发布时间】:2020-08-06 12:33:55
【问题描述】:
我最初发布了this question on Super User。但是,这似乎不是正确的地方。
我有一个包含一个自定义数据库的 Azure SQL Server(我们称之为my_db)。到目前为止,我一直在使用我的服务器管理员凭据访问这个数据库。但是,我想让它更安全。为了做到这一点,我想创建一个仅限于my_db 的登录名/用户。我尝试了以下方法:
在 master 数据库上,通过服务器管理员凭据
- 使用
CREATE LOGIN db_login WITH password 'somePassword';创建了登录
在我的其他数据库 (my_db) 上,使用服务器管理员凭据
- 使用
CREATE USER db_login_user FROM LOGIN db_login;创建了一个用户 - 通过以下语句授予读取、写入和所有者权限:
EXEC sp_addrolemember 'db_datareader', 'db_login_user'EXEC sp_addrolemember 'db_datawriter', 'db_login_user'EXEC sp_addrolmember 'db_owner', 'db_login_user'
我现在正尝试通过 Azure Data Studio 登录。但是,我得到以下结果:
使用db_login_user时
用户“db_login_user”登录失败。
使用db_login时
服务器主体“db_login”无法在当前安全上下文下访问数据库“my_db”。无法打开登录请求的数据库“my_db”。登录失败。用户“db_login”登录失败。
我可以使用服务器管理员凭据成功访问数据库。然而,我再一次试图让这更安全。这个时候,我不明白为什么我无法使用新用户/登录名连接到数据库。另外,我不明白我是否应该尝试使用db_login 或db_login_user 登录。
如何使用仅限于服务器上单个数据库的凭据创建用户?
谢谢!
【问题讨论】:
-
可能重复/相关:stackoverflow.com/q/19094970