Yul*_*a V 4 sql-server azure-sql-database
我有一个 Azure 数据库,并且在同一台服务器上创建了另一个数据库。之后,我创建了一个用户和一个相应的登录名(请参阅下面的脚本),目的是仅将其用于第二个数据库。运行我搜索过的脚本后(如下),第二个用户可以访问两个数据库。如何拒绝第二个用户访问第一个数据库?有DENY和REVOKE,否认特定权利,但我不清楚应该使用哪个。
额外问题:是否可以创建一个只能访问第二个数据库的用户?
IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE ('[' + name + ']' = '[Elmah5]'))
CREATE DATABASE Elmah5;
GO
IF NOT EXISTS (SELECT 1 FROM sys.sql_logins WHERE name = 'ElmahAdmin')
CREATE LOGIN ElmahAdmin WITH PASSWORD = ''
GO
IF NOT EXISTS (SELECT 1 FROM sys.database_principals WHERE name = 'ElmahAdmin')
CREATE USER ElmahAdmin FOR LOGIN ElmahAdmin WITH DEFAULT_SCHEMA=[dbo]
GO
Run Code Online (Sandbox Code Playgroud)
将您当前的数据库切换到 MASTER(圈出,只需输入 MASTER 并按 ENTER)并运行
IF NOT EXISTS (SELECT 1 FROM master.sys.databases WHERE ('[' + name + ']' = '[SecondDB]'))
CREATE DATABASE SecondDB;
GO
IF NOT EXISTS (SELECT 1 FROM sys.sql_logins WHERE name = 'SecondDBAdmin')
CREATE LOGIN SecondDBAdmin WITH PASSWORD = ''
GO
Run Code Online (Sandbox Code Playgroud)仍然在您第一次登录的情况下,切换到 SecondDB 并运行
CREATE USER SecondDBAdmin FOR LOGIN SecondDBAdmin WITH DEFAULT_SCHEMA=[dbo]
GO
EXEC sp_addrolemember @rolename = 'db_owner', @membername = 'SecondDBAdmin'
GO
Run Code Online (Sandbox Code Playgroud)如果您根本不希望用户访问数据库,请确保您的用户没有允许他们访问每个数据库的系统管理员权限。除此之外,在您不希望第二个用户访问的数据库上,运行以下命令:
USE [1stDatabase]
DROP USER [2ndUser]
GO
Run Code Online (Sandbox Code Playgroud)
为第二个数据库创建独占用户:
USE MASTER
CREATE LOGIN [login_name here] WITH PASSWORD = '[password here]'
GO
USE [2ndDatabase]
CREATE USER [login name here] FOR LOGIN [login name here]
GO
Run Code Online (Sandbox Code Playgroud)