Ele*_*eer 2 sql-server permissions
我正在使用 mssql,我想实现这一目标:拥有 1 个数据库,2 个非 SA 用户。第一个用户应该是数据库的所有者,第二个用户应该对某些表具有读取权限,对其他表具有读+写权限。
第二个用户的表是由我们使用第一个用户的应用程序创建的。
我所做的步骤:
1)我执行创建 DB + 用户的脚本
CREATE LOGIN USER1
WITH PASSWORD = 'password';
GO
CREATE USER USER1 FOR LOGIN USER1;
GO
CREATE DATABASE my_database;
ALTER AUTHORIZATION ON DATABASE ::my_database TO USER1;
CREATE LOGIN USER2
WITH PASSWORD = 'password';
GO
CREATE USER USER2 FOR LOGIN USER2;
GO
Run Code Online (Sandbox Code Playgroud)
2) 我的应用程序执行创建表的脚本 + 向 USER2 授予对表的权限,这失败了,因为:
Cannot find the user 'USER2', because it does not exist or you do not
have permission.
Run Code Online (Sandbox Code Playgroud)
我的问题是如何授予 USER1 权限以在 my_database 中为其他用户添加读/写权限?不过,那个数据库所有者就足够了。
例如我如何向 USER2 授予权限:
GRANT SELECT ON OBJECT ::schema_version TO USER2;
Run Code Online (Sandbox Code Playgroud)
您已经为 user1 和 user2 创建了到 master 数据库的登录名,而不是您想要的数据库。
重新排列为:
CREATE LOGIN USER1
WITH PASSWORD = 'password';
GO
CREATE DATABASE my_database;
ALTER AUTHORIZATION ON DATABASE ::my_database TO USER1;
CREATE LOGIN USER2
WITH PASSWORD = 'password';
GO
USE my_database;
GO
CREATE USER USER2 FOR LOGIN USER2;
GO
Run Code Online (Sandbox Code Playgroud)
然后,您可以向该用户添加权限,因为该用户将存在于该数据库中。
注意:您可能想要进入您的主数据库(或您之前运行这些命令的任何数据库)并删除 USER1 和 USER2
归档时间: |
|
查看次数: |
18588 次 |
最近记录: |