如何禁止普通用户使用企业管理器列出服务器上的数据库列表
来源:互联网 发布:gis软件 编辑:程序博客网 时间:2024/05/16 11:33
如何禁止普通用户使用企业管理器列出服务器上的数据库列表
在建立一个低权限数据库用户的时候,往往只希望他可以拥有对特定数据库的访问权限,对于特定数据库之外的信息,是知道的越少越好。首先,假设有一个低权限用户A、
然而在MSSQL的企业管理器中,即使使用用户A注册一个服务器之后,仍然可以看到所有的数据库列表。有些情况下,这不是一个好事情。然而使用A登陆到查询分析器之后,却只能看到指定的数据库列表,还有系统数据库,这是为什么呢?
我们首先分析企业管理器和查询分析器获取数据库列表的区别,然后再告诉大家如何禁止用户A看到数据库列表。
使用MSSQL自带的事件查探器进行分析可以知道,企业管理器使用如下语句获取数据库列表:
select name, DATABASEPROPERTY(name, N'IsDetached'), (case when DATABASEPROPERTY(name, N'IsShutdown') is null then -1 else DATABASEPROPERTY(name, N'IsShutdown') end), DATABASEPROPERTY(name, N'IsSuspect'), DATABASEPROPERTY(name, N'IsOffline'), DATABASEPROPERTY(name, N'IsInLoad'), (case when DATABASEPROPERTY(name, N'IsInRecovery') is null then -1 else DATABASEPROPERTY(name, N'IsInRecovery') end), (case when DATABASEPROPERTY(name, N'IsNotRecovered') is null then -1 else DATABASEPROPERTY(name, N'IsNotRecovered') end), DATABASEPROPERTY(name, N'IsEmergencyMode'), DATABASEPROPERTY(name, N'IsInStandBy'), has_dbaccess(name), status, category, status2 from master.dbo.sysdatabases
而查询分析器则使用如下语句获取数据库列表(执行一个存储过程)
dbo.sp_MShasdbaccess
这就是原因之所在了
在默认情况下,数据库用户对系统数据库是拥有权限的,可以从系统数据库查询信息,所以,企业管理器通过查询master数据库来获取数据库列表的方式并不受用户所能访问的数据库的限制。
而查询分析器执行的存储过程是经过权限限定后的数据库列表。
那如果要禁止用户查看他没有权限访问的数据库名称,只有,,,,禁止他查询master.dbo.sysdatabases了
好了,目标已经明确,相信大家已经知道怎么做了
把用户加入到master数据库的用户中去
然后指派sysdatabases表的访问权限
把A用户的select权限去掉
好了,这时候,用户A如果再使用企业管理器,什么数据库也看不到了
只能使用查询分析器进行操作了
虽然有些严厉,但也是一种解决方法
- 如何禁止普通用户使用企业管理器列出服务器上的数据库列表
- 如何获取数据库服务器上的数据库列表
- SQL Server 2000的企业管理器里找不到数据库服务器
- 怎样用sqlserver2005的企业管理器远程连接其他数据库服务器??
- MSSQL数据库同步的方法--使用企业管理器
- 如何使用不同数据库服务器上的数据库 拗口吧
- shell: 普通用户如何以root权限执行远程服务器上的命令_20160706_七侠镇莫尛貝
- 续上 编写Servlet查询数据库,列出员工信息列表
- 请问如何通过企业管理器将Access数据库的数据导入 SQL Server数据库?
- 数据库Oracle9i的企业管理器介绍
- 如何使用jacl命令列出所有企业应用ear
- sql server 企业管理器 远程数据库服务器 端口
- 列出与禁止文件目录列表
- 服务器 centos 禁止普通用户重启关机
- centos服务器 禁止普通用户重启关机
- 如何恢复在ms sql 数据库的企业管理器里误删除的数据
- 列出服务器上所有用户数据库+表+存储过程+触发器
- 如何设置Apache禁止访问目录(列出目录/文件列表)
- HBufC使用中的陷阱与误区
- 面向对象程序设计的基本原则
- 托业实用词汇
- 托业考试常遇到的科学论文词汇汇总
- .NET 中禁止map自动排序
- 如何禁止普通用户使用企业管理器列出服务器上的数据库列表
- 学习数据库:如何优化SQL Server数据库查询
- MFC中关于打开和另存为对话框中过滤器的编程
- Scott Mitchell 的ASP.NET 2.0数据教程之71:处理Computed Columns列
- 一个wiki的比较
- 模拟office 2007 界面的.net 控件
- VS2005 快捷键 速记
- eclipse各版本下载及所有各方面插件下载
- MySQL双机热备份实施方案