Sqlserver中 登录用户只能看到自己拥有权限的库

 
问题背景:公司的一台数据库服务器上放在多个数据库,每个数据库都使用不同的登录名称,但在将项目文件发布到Ftp时,有些Ftp的信息是在客户那边的
一旦客户那边使用配置文件中的数据库信息连接到数据库他就能够看到服务器上所有的数据库,虽然它不能访问其他的数据库但还是有安全隐患的
现在我需要的是指定的登录用户只能看到并访问它自己的数据库而不能看到其他的数据库,于是在网络上找到解决方案
 
--创建测试数据库
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数据库了
 
注意:很多时候我们发现好像并没有生效,那么试试重启SSMS看看。
 
参考:
 

(4.25)Sqlserver中 登录用户只能看到自己拥有权限的库的更多相关文章

  1. Sqlserver中 登录用户只能看到自己拥有权限的库

    执行之前新建用户时不要赋予任何权限 USE master GO --将所有数据库的查看权限给Public角色,每个登录用户只能查看指定的数据库 --此语句会导致服务器上所有的用户在没有设置数据库权限的 ...

  2. SQL Server中授予用户查看对象定义的权限

    SQL Server中授予用户查看对象定义的权限   在SQL Server中,有时候需要给一些登录名(用户)授予查看所有或部分对象(存储过程.函数.视图.表)的定义权限存.如果是部分存储过程.函数. ...

  3. UNIX环境编程学习笔记(8)——文件I/O之校验当前登录用户对文件的访问权限

    lienhua342014-09-03 通过前面一篇随笔(文件访问权限与进程访问控制),我们知道内核校验文件的访问权限使用的是进程的有效用户 ID 和有效组 ID.但有时我们需要知道当前登录用户对某个 ...

  4. linux中的用户、群组和权限

     linux中的用户.群组和权限   新建用户natasha,uid为1000,gid为555,备注信息为“master”   groupadd -g 555 natasha useradd -u 1 ...

  5. Delphi实现软件中登录用户的操作权限

    数据库结构:包括两张表BaseData和UserRightData,BaseData中是一张基本表,里面不区分用户,UserRightData是用户权限表,结构和BaseData一样,只是多了用户字段 ...

  6. SQLServer中登录名的用户名配置

    其实这个问题困扰我很久了. 今夏(13.7)实习的时候第一次接触sqlserver 当时是统一安排,按部就班的做就行. 那时候链接数据库用的id是sa. 后来自己做小程序时候举得不管什么都用sa登录好 ...

  7. mssql 用户只能查看授权的数据库

    问题背景:公司的一台数据库服务器上放在多个数据库,每个数据库都使用不同的登录名称,但在将项目文件发布到Ftp时,有些Ftp的信息是在客户那边的 一旦客户那边使用配置文件中的数据库信息连接到数据库他就能 ...

  8. Django 中的用户认证

    Django 自带一个用户认证系统,这个系统处理用户帐户.组.权限和基于 cookie 的 会话.本文说明这个系统是如何工作的. 概览 认证系统由以下部分组成: 用户 权限:控制用户进否可以执行某项任 ...

  9. 【MSSQL】SQL Server 设置用户只能查看并访问特定数据库

    #背景 SQL Server实例上有多个服务商的数据库,每个数据库要由各自的服务商进行维护, 为了限定不同服务商商的维护人员只能访问自己的数据库,且不能看到其他服务商的数据库,现需要给各个服务商商限定 ...

随机推荐

  1. js时间转时间戳

    转换成时间戳 new Date('2018-10-11 14:28:47'.replace(/-/g, '/')).getTime() //1539239327000

  2. Puppet学习笔记(CentOS6.3+Puppet3.01)

    Puppet学习笔记(CentOS6.3+Puppet3.01)  技术 Add comments Oct262012 下了决心,好好学习puppet,周末专门去参加一个puppet的培训,难得朋友那 ...

  3. kafka——分布式的消息队列系统

    总听公司人说kafka kafka... 所以这玩意到底是个啥? 好像是一个高级版的消息队列,什么高吞吐量,数据持久,消息均衡,emmm https://blog.csdn.net/nawenqian ...

  4. 【leetcode】Network Delay Time

    题目: There are N network nodes, labelled 1 to N. Given times, a list of travel times as directed edge ...

  5. Halcon10.0 + VS2010

    新建一个C++空项目 添加c1.pp 复制example1.cpp的代码 配置include\lib\bin\Linker之后

  6. 向android模拟器打电话发短信的简单方法

    在开发android应用程序时,有时候需要测试一下向android手机拨打电话发送短信时该应用程序的反应.譬如编写一个广播接收器,来提示用户有短信收到或者处理短信,就需要向该手机发送短信来进行测试.这 ...

  7. springboot切换配置

    1.默认只有一个application.properties文件 1)删除properties文件,换成yml方式.新增dev,prod两个文件 2)配置application.yml文件:actio ...

  8. 3.并发编程-ReentrantLock 细节说明

    并发编程-ReentrantLock 细节说明 ---title: 并发编程-ReentrantLock 细节说明date: 2018-07-05 09:06:57categories: - 并发编程 ...

  9. Java源码阅读-Integer(基于jdk1.8)

    public final class Integer extends Number implements Comparable<Integer> Integer 由final修饰了,所以该 ...

  10. 小菜鸟 菜谈 KMP->字典树->AC自动机->trie 图 (改进与不改进)

    本文的主要宗旨是总结自己看了大佬们对AC自动机和trie 图 的一些理解与看法.(前沿:本人水平有限,总结有误,希望大佬们可以指出) KMP分割线--------------------------- ...