Sqlserver中 登陆用户只能看到本身拥有权限的库

问题背景:公司的一台数据库服务器上放在多个数据库,每一个数据库都使用不一样的登陆名称,但在将项目文件发布到Ftp时,有些Ftp的信息是在客户那边的 html

一旦客户那边使用配置文件中的数据库信息链接到数据库他就可以看到服务器上全部的数据库,虽然它不能访问其余的数据库但仍是有安全隐患的 sql

如今我须要的是指定的登陆用户只能看到并访问它本身的数据库而不能看到其余的数据库,因而在网络上找到解决方案 数据库

复制代码

--建立测试数据库
Create database Test;
USE master
GO
--经过sp_addlogin建立登陆名
--TestUser:用户登录帐号
--Test123456:用户登录密码
execute sp_addlogin 'TestUser','Test123456'
--在数据库Test里建立数据库TestUser帐号
--每个TestUser为登录名
--第二个TestUser为数据库帐号
execute sp_grantdbaccess 'TestUser','TestUser'
--将TestUser帐号添加到数据库角色为数据库全部者
execute sp_addrolemember 'db_owner','TestUser'

复制代码

在SSMS中使用“TestUser”帐号登陆后就可能看到全部的数据库 安全

但若是访问的数据库不是Test则为提示没有权限 服务器

复制代码

USE master
GO
--将全部数据库的查看权限给Public角色,每一个登陆用户只能查看指定的数据库
--此语句会致使服务器上全部的用户在没有设置数据库权限的状况下不会显示任何数据库,有可能会影响正常使用
DENY VIEW any DATABASE TO PUBLIC;
--将数据库Test的全部权给TestUser用户
--TestUser用户能够查看并访问Test数据库
ALTER AUTHORIZATION ON DATABASE::Test TO TestUser

复制代码

“DENY VIEW any DATABASE TO PUBLIC;”后若是没有进行权限设置默认的登陆用户是不能查看任何数据库的 网络

“ALTER AUTHORIZATION ON DATABASE::Test TO TestUser”后TestUser就能够只能查看并访问Test数据库了 antd

参考: 测试

使SQL用户只能看到本身拥有权限的库 3d

MSDN VIEW ANY DATABASE 权限 htm

MSDN ALTER AUTHORIZATION (Transact-SQL)

MSDN sp_addlogin (Transact-SQL)

相关文章
相关标签/搜索