Restreindre L'accès au Login du serveur SQL à une seule base de données
j'ai un serveur SQL Server
qui contient environ 50 bases de données.
je souhaite créer un nouveau Login
pour un client qui souhaite avoir accès à leur base de données.
mais je ne veux pas leur donner accès à l'autre 49 bases de données .
Comment faire?
3 réponses
- connectez - vous à L'instance de votre serveur SQL en utilisant management studio
- Goto Security - > Logins - > (clic droit) nouveau Login
- entrer les coordonnées de l'utilisateur
- sous cartographie utilisateur, sélectionnez les bases de données que vous souhaitez que l'utilisateur soit en mesure d'accéder et de configurer
mise à jour:
vous voudrez aussi aller Security -> Server Roles
, et pour public
vérifier les permissions pour TSQL Default TCP/TSQL Default VIA/TSQL Local Machine/TSQL Named Pipes
et supprimer la connect
permission
je pense que c'est ce que nous aimons faire beaucoup.
--Step 1: (create a new user)
create LOGIN hello WITH PASSWORD='foo', CHECK_POLICY = OFF;
-- Step 2:(deny view to any database)
USE master;
GO
DENY VIEW ANY DATABASE TO hello;
-- step 3 (then authorized the user for that specific database , you have to use the master by doing use master as below)
USE master;
GO
ALTER AUTHORIZATION ON DATABASE::yourDB TO hello;
GO
si vous avez déjà créé un utilisateur et assigné à cette base de données avant en faisant
USE [yourDB]
CREATE USER hello FOR LOGIN hello WITH DEFAULT_SCHEMA=[dbo]
GO
puis veuillez le supprimer en faisant ci-dessous et suivre les étapes
USE yourDB;
GO
DROP USER newlogin;
GO
pour plus d'information s'il vous plaît suivre les liens:
cacher des bases de données pour une connexion sur Microsoft Sql Server 2008R2 et au-dessus
pour quiconque se demande comment faire cela, J'ai la solution suivante pour SQL Server 2008 R2 et plus tard:
USE master
go
DENY VIEW ANY DATABASE TO [user]
go
cela répondra exactement à l'exigence décrite ci-dessus..