日期:2014-05-18  浏览次数:20840 次

请教一下SQL Server的登录名和数据库用户名的区别
请教一下SQL Server的登录名和数据库用户名的区别

我知道数据库用户名可以用于获取数据库相应的权限,而登录名不可以;但我不了解为什么要设计一个数据库用户名,直接让登录名对数据库拥有相应权限不更方便吗?难道这样更方便?还是让安全分层更合理?

我这样理解可以吗?我记得网上有这样一句话:“登录名登录后,通过检查数据库有没有与该登录名映射到用户名,如果有则赋予该登录名相应权限,如果无则拒绝赋予该登录名权限”。也就是说通过数据库用户名来确定该登录名对哪些数据库具有权限。

就像大楼和房间的例子:一个登录名可以被授权访问多个数据库,但一个登录名在每个数据库中只能映射一次。即一个登录可对应多个用户,一个用户也可以被多个登录使用。好比SQLSERVER就象一栋大楼,里面的每个房间都是一个数据库.登录名只是进入大楼的钥匙,而用户名则是进入房间的钥匙.一个登录名可以有多个房间的钥匙,但一个登录名在一个房间只能拥有此房间的一把钥匙。

那我不解的是,我的目的是进入房间(数据库),我光光进入大楼(SQL Server服务器)是没有意义的啊,那为什么还要对我进房间设门槛,直接给我进入相应房间的权限不就行了吗?何必还得给我大楼钥匙又给我房间钥匙。最简单的理解就是如果是使用一卡通(门禁卡),直接给我的一张卡分配能进入大楼和哪些房间的权限,不用进大楼用一种卡,进房间又一种卡,那样岂不是更麻烦?




------解决方案--------------------
叙述太长
------解决方案--------------------
没有登录名,进不了大楼--有了登录名,就能进大楼
没有用户名,进不了房间--有了用户名,才能进房间

既然你已经理解到这一层了,那登录名和用户名的区别,不就是大楼钥匙和房间钥匙的区别吗,如果给了一张卡给你,里面也会保存着,此人可以进大楼 & 此人可以进某房间,这和两把钥匙又有什么本质的区别呢?
------解决方案--------------------
进大楼的卡 和 进房间的卡 有映射关系
------解决方案--------------------
建议看看数据库权限的这一章。
------解决方案--------------------
讲得很清楚了 呵呵
------解决方案--------------------
我觉得楼主已经接近真相了~~~其实就是出于安全权限的控制