就一个问题。我通过向导创建了一个登录名,然后将用户与数据库的登录名相关联;但是,我有几个数据库,我是否必须手动为所有数据库创建一个用户?
我创建了 db_reader 和 db_writer。
为每个数据库创建所有用户后,我可以运行以下命令:
REVOKE ALL
ON ALL TABLES IN SCHEMA public
FROM PUBLIC;
GRANT SELECT
ON ALL TABLES IN SCHEMA public
TO 'db_reader';
REVOKE ALL
ON ALL TABLES IN SCHEMA public
FROM PUBLIC;
GRANT SELECT, INSERT, UPDATE, DELETE
ON ALL TABLES IN SCHEMA public
TO 'db_writer';
有没有办法使用 SELECT 仔细检查他们有哪些访问权限?
或者我还需要做其他事情来实现我想要的吗?我正在使用 MSSQL。
SQL Server Management Studio 15.0.18338.0
SQL Server Management Objects (SMO) 16.100.41011.9
Microsoft Analysis Services Client Tools 15.0.19205.0
Microsoft Data Access Components (MDAC) 10.0.19041.1
Microsoft MSXML 3.0 6.0
Microsoft .NET Framework 4.0.30319.42000
Operating System 10.0.19044
SQL Server 中的权限在显式授予之前被隐式拒绝。对于您希望登录名有权访问的每个数据库,您需要在该数据库中创建相应的用户,否则他们将没有任何访问权限(除非服务器级角色将这些权限授予登录名,例如
SysAdmin
角色。)因此,只要您适当地使用自定义角色,就不需要您的
REVOKE ALL
脚本。