面试题:请问在SQL2000中怎么区分登入,用户,角色,并用例子举例说明;
再问:
(1)登入ID是不是就是用户名(当我创建了一个登入, 我在点击登入所对应的数据,实例中的用户一栏看到登入ID与用户名一致)
(2)一个登入ID是不是只能对应一个用户
教科书答案:登录 ID 仅能使您连接到 SQL Server 实例。特定数据库内的权限由用户帐户控制。数据库管理员将您的登录帐户映射到您有权访问的任何数据库中的用户帐户
用户如:sa
角色如:public/db_owner/db_datareader/db_datawriter等
只有给用户赋予角色,该用户才有相应的操作数据库的权限
如将public/db_owner角色赋给sa,则该用户有对数据库进行一切操作的权限
角色:完成特定的、与服务器相关的管理任务所需的权限,一个用户可以属于多个角色。
登录:仅能使您连接到 SQL Server 实例。
命题官的理解:
登录是sql实例级的
用户是数据库级的
角色有实例级和数据库级两种
登录决定你是否能访问sql实例
用户与登录对应, 确实某个登录后, 它对那些数据库有那些权限.
角色是为了方便管理一类登录或者用户所具有的权限, 当某一类登录或者用户具有相同的权限时, 可以简单地给予他们对应的角色即可.
做个形象的比喻:
sql实例就相当于一个公司.
如果你要在公司工作自然就要成为公司的员工, 因此公司的员工就相当于登录
公司有不同的部门, 这相当于数据库, 你要在某个部门做事, 必须把你分配到某个部门, 也就是在部门的名单中要有你, 这个部门的名单就相当于用户. 名单必须对应公司的某个员工。
但你一个人是可以在多个部门工作的
因此, 一个登录可以对应多个数据库的不同用户.
同样, 一个员工在一个部门的名单中只可能出现一次
因此, 一个登录在同一数据库中, 只可能对应一个用户
为了方便定义每个员工应该做些什么, 应该承担什么职责, 公司会定义职位, 我个职位对应的, 在数据库中就叫角色.
因为有的职位是公司层面的, 比如懂事长, 他什么都可以管
因此, 有sql实例级的角色
也可以具体地为每个部位定义职位, 不同部门的同一名称的职位它的具体内容可以不同.
因此,对应于sql而言, 它又有数据库级的角色
某个员工是某个职位, 则具有该职位对应的权限与责任
因此, 对于sql而言, 某个登录或者用户被授予某个或者某些角色, 它就具有对应的权限.
不同职位, 在不同时期, 可以由不人担任, 换人只需要取消和授予对应人员的职位就可以了. 不用改职位定义.
因此, 对于sql而言, 可以根据需要取消和授予某个登录或者用户的角色.
(这是管理方便性需要, 你完全可以不理会角色, 自己为用户或者登录指定权限)