1.在SQL Server Management Studio中为所属的SQL服务器设置为SQL Server和Windows NT混合安全认证模式。其步骤如下:
(1) 在对象资源管理器中,用鼠标右击需要设置的SQL服务器,在弹出的菜单中选择“属性”项,则出现服务器对话框。在“选择页”中选择“安全性”。
(2)在“服务器身份验证”中选择“SQL Server和Windows身份验证模式”单选项。
2.在SQL Server Management Studio中为自己建立一个服务器用户、数据库用户和数据库角色。
(1) 在对象资源管理器中展开服务器,用鼠标单击“安全性”文件夹右侧的‘+’,再用鼠标右击“登录名”,在弹出的菜单中选择“新建登录名”选项,则出现新建登录名对话框。
(2选择“选择页”中的“常规”选项,输入登录名(本例为user),选择SQL Server身份验证,并输入用户密码。指定此登录名可以访问的数据库(本例选中Test数据库)。
(3)选择“选择页”中的“服务器角色”选项,需要确定用户所属的服务器角色,在本例中采用缺省值public即可。
(4)选择“选择页”中的“用户映射”选项,需要确定映射到此登录名的用户,在本例中勾选Test。数据库角色成员身份选择public。
(5)单击“确定”按钮,即完成了创建登录用户的工作。
3.登录新建用户
(1)重新登录SQL Server Management Studio,如图6-5所示,选择“SQL Server身份验证”,用户名为user,输入用户密码,连接到SQL Server。
(2) 新建查询,选择Test数据库,在查询编辑窗口中键入SQL查询命令“SELECT * FROM Student”。运行后,在运行结果窗口得到消息“拒绝了对对象 'Student'(数据库 'Test',所有者 'dbo')的 SELECT 权限。”,可见用户user没有对Student表的SELECT权限。
3.要将Test数据库的部分操作权限赋予数据库用户user,有两种方法。
方法一:通过图形界面方式
(1)断开连接,以sa身份进入SQL Server Management Studio,展开服务器,用鼠标单击“数据库”文件夹右侧的‘+’,用鼠标单击Test数据库文件夹右侧的‘+’,用鼠标右击“用户”。在屏幕右侧的“用户”窗口中选择“user”项,用鼠标右击,在弹出的菜单中选择“属性”项,则出现数据库用户属性对话框,选择“安全对象”选项.
(2)点击“搜索”按钮,出现“添加对象”对话框,选择“特定对象”,点击“确定”按钮.
(3)在“选择对象”对话框中点击“对象类型”按钮,并点击表,然后点击确定。
(4)在“选择对象”对话框中,点击“浏览”按钮,进入“查找对象”对话框。
(5)在“查找对象”对话框中勾选表Student,然后点击“确定”按钮,再次返回到“选择对象”对话框。
(6)在安全对象设置对话框中,通过勾选dbo.Student对应的权限给用户user授权。勾选“选择”权限对应的授权框,再点击“确定”按钮,使得用户user获得Student表的查询权限。
(7)验证用户user对Student表的操作权限。以用户user的身份登录,在SQL Server Management Studio中新建查询,并在查询编辑区中使用SQL语句查询到Student表中的数据。但是如果以用户user的身份查询其他基本表,依然无法查看表中数据。
方法二:通过SQL的数据控制功能
对用户user授权,必须是数据库对象拥有者以上用户授予。我们可以以系统管理员或sa用户登录。选择“Test”数据库,选择“Test”数据库,在查询编辑区中输入授权语句“GRANT SELECT ON SC TO [user];”,然后执行即可。
。
注意:user与关键字冲突,此时应当加入一个中括号。
5.使用角色来管理数据库权限
创建角色,使该角色拥有一组权限,然后将角色授予一个指定的用户。
方法一:通过图形界面
创建角色R1,使该角色拥SC表的插入、更新权限,然后将角色R1授予指定的用户user。
(1) 在“对象资源管理器”中展开服务器,用鼠标单击“数据库”文件夹左侧的‘+’,用鼠标单击Test数据库文件夹左侧的‘+’,展开数据库文件夹,然后依次展开“安全性”、“角色”。鼠标右击“数据库角色”,在弹出的菜单中选择“新建数据库角色”项,则出现数据库角色属性对话框。
(2)在“选择页”中选择“常规”选项,并在“角色名称”一栏输入R1。
(3)赋予角色权限的方法与赋予“数据库用户权限”的方法类似。在“选择页”中选择“安全对象”选项。
(4)点击“搜索”按钮,出现“添加对象”对话框,选择“特定对象”,点击“确定”按钮
(5)在“选择对象”对话框中点击“对象类型”按钮。
(6)在“选择对象类型”对话框中勾选“表”,然后点击“确定”按钮,返回到“选择对象”对话框。
(7)在“选择对象”对话框中,点击“浏览”按钮,进入“查找对象”对话框。
(8在“查找对象”对话框中勾选表SC,然后点击“确定”按钮,再次返回到“选择对象”对话框。
(9)点击“确定”按钮,返回到安全对象设置对话框。
(10)在安全对象设置对话框中,通过勾选dbo.SC对应的权限给角色R1授权。勾选“选择”,“插入”权限对应的授权框,点击“确定”按钮,使得角色R1获得SC表的插入和修改权限。
(11)在“选择页”中选择“常规”选项,点击“添加”按钮,实现将角色R1授予用户。
(12)在“选择数据库用户或角色”对话框中,点击“浏览”按钮,进入“查找对象”对话框。
(13)如图6-26所示,在“查找对象”对话框中勾选user,点击“确定”按钮返回。
(14)点击“确定”按钮完成授权,实现把角色R1授予用户user。
(15)验证用户user的操作权限。以用户user的身份登录,在SQL Server Management Studio中新建查询,并在查询编辑区中使用SQL语句,验证用户user的操作权限。
方法二:通过SQL的数据控制功能
对角色授权,必须是数据库对象拥有者以上用户授予。我们可以以系统管理员或sa用户登录SQL Server Management Studio。
创建角色R2,使该角色拥Student表的SELECT、INSERT权限,然后将角色R2授予指定的用户U2和U3。(自行创建U2,U3)
1)在文本编辑区中使用语句sp_addrole @rolename='角色名'创建角色R2;
注意:选择数据库为test
2)用GRANT语句为角色R2赋予Student表的SELECT、INSERT权限;
3)在查询分析器中使用语句sp_addrolemember '角色名','用户名'将角色授予指定的用户。
6.分别以用户U1,U2,U3的身份进入数据库,实现权限内的操作和权限外的操作,看看会得到什么结果?