日期:2014-05-16  浏览次数:20661 次

sql server 登录用户和master表的关系
小弟在学习sql server数据库,有几个问题想请教各位

1、对于sqlserver,能否查询到当前登录用户所能看到的所有数据库?
我是用jdbc来实现与数据库的连接,假如现在有个登录用户登录了XXX库,
我想知道当前的这个登录用户有几个数据库的权限,就是还能访问哪些数据库,应该怎么处理?

2、对于sql server,什么用户都可以登录master库吗?如果不行,那没有登录该库权限的用户要如何登录master库?
假如当前登录没有登录master的权限,但是系统好像会给他一个guest的一个默认用户,此时他能在master库中
查到什么信息呢?可以查到并访问所有的数据库吗?

3、假设有个用户拥有登录master的权限,那他可以在看到所有的数据库吗?》并且可以访问这些数据库吗?

脑子有点乱乱的,希望大家能帮我解惑、、、
------解决方案--------------------
1、对于sqlserver,能否查询到当前登录用户所能看到的所有数据库?
我是用jdbc来实现与数据库的连接,假如现在有个登录用户登录了XXX库,
我想知道当前的这个登录用户有几个数据库的权限,就是还能访问哪些数据库,应该怎么处理?
能,不过这个要看sqlserver的版本,并且有时候不能尽如人意。
2、对于sql server,什么用户都可以登录master库吗?如果不行,那没有登录该库权限的用户要如何登录master库?
假如当前登录没有登录master的权限,但是系统好像会给他一个guest的一个默认用户,此时他能在master库中
查到什么信息呢?可以查到并访问所有的数据库吗?
所有用户默认都能访问master,只是权限有多大而已,另外tempdb也是一样的。这两个库是默认对所有用户开放。另外访问别的库的最低要求是这个帐号对这个库最少有public的权限,也就是允许联接,至于能不能读表、存储过程等,需要额外配置权限。
3、假设有个用户拥有登录master的权限,那他可以在看到所有的数据库吗?》并且可以访问这些数据库吗?
默认情况下,不能,只能访问master和tempdb,其他库需要额外配置,用户登录仅保证你能连接sqlserver并访问两个库,但是其他库,需要单独配置对这个库的权限
------解决方案--------------------
建议LZ系统的学习MSSQL的安全架构,
如登录,用户,服务器角色,数据库角色, 相关的系统表sys.sysusers,sid的概念等等.
所提这些问题就迎刃而解了..