现在的位置: 首页 > 综合 > 正文

SQL Server Logins, Database Users, Database Roles and Schemas

2012年05月18日 ⁄ 综合 ⁄ 共 1713字 ⁄ 字号 评论关闭

 

[引子]

 You work as a database administrator for your company. A SQL Server Login named Tom is used only within the AdventureWorks database.

A new company security policy is being implemented. This new policy states that SQL Server Authentication cannot be used. In preparation for implementation of the policy, you must remove the Tom Login.

The new policy states that users associated with SQL Server Logins must be removed, and the ownership of anything that is owned by these users must be transferred to dbo.

 

 

要完成此任务,下面是一个推荐的执行步骤

1Database – AdventureWorksSecuritySchema – Tom(if exists) – Properties – General, change the Schema owner from Tom to dbo.

2Database – AdventureWorksSecurity – Users – Tom, Delete Tom.

3Server – Security – Logins, Delete the Tom

 

Ok,任务是完成了。但是我们不能仅仅就此满足了,你是否真的完全知道为什么要按照这个顺序来做,以及每个步骤中涉及的术语你是否真的明白了。

 

[正文]

 

1. SQL Server Logins



(1) 创建一个可以登录到数据库的用户。输入登录名,密码和选择默认数据库,但是如果你没有在User Mapping中没有相应的指定该数据库,你可以成功创建该用户,但是该用户登录的时候,将会提示4064错误。解决方法自然很明显了。

(2) 当你在User Mapping中指定了相应的数据库后,SQL Server会自动在该数据库下面创建一个同名的用户。并默认其架构为dbo。这个时候,你登录数据库成功,但是当你执行任何T-SQL语句却发现没有任何权限。因为他不属于任何数据库角色。即便他拥有了一个架构。

 

2. Database Users

(1) 数据库用户是数据库级别上的主体。每个数据库用户都是 public 角色的成员。

(2)你可以为用户选择某个架构,并具体为该用户设置该架构下的各个数据库对象(表,视图,函数,存储过程)的权限。

3. Database Roles

(1) 两种数据库级角色:SQL Server预置的固定角色,用户自定义的角色。

(2)可以向数据库角色中添加数据库用户

(3) 可以为角色选择某个架构,并具体为该用户设置该架构下的各个数据库对象(表,视图,函数,存储过程)的权限。【同2.(2)

 

4. Database Schemas

(1) 架构是指包含表、视图、过程等的容器。它位于数据库内部,而数据库位于服务器内部。这些实体就像嵌套框放置在一起。服务器是最外面的框,而架构是最里面的框。架构包含下面列出的所有安全对象,但是它不包含其他框。
(2) 可以为架构,选择用户角色和用户,在这里设定权限后,用户或者角色的权限对将该架构下所有对象有效。

 

 

5 练习。

(1)创建一个数据库DB1, 创建一个架构hr

(2)创建三个用户角色hr_reader, hr_writerhr_admin. hr_reader的只有select权限, hr_writer拥有selectupdate权限,hr_admin拥有select, update, deleteexecute权限。

(3)创建三个登录hra, hrr, hrw分别对应数据库角色hr_reader, hr_writerhr_admin.

(4) 创建一个表hr.Employee, 字段em_id, first_name, last_name

(5) 创建一个存贮过程sp_ListEmployees

(6) 分别测试各个用户的权限是否设置正确。

抱歉!评论已关闭.