- 1、本文档共50页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章账户和存取权限讲述
在该对话框可看到属于该角色的成员。单击【添加】或单击【删除】按钮。 图10-16 “数据库角色—新建”对话框 (2)管理数据库角色。 在SSMS中,展开【服务器】、【数据库】和【安全性】文件夹,右击【数据库角色】,从弹出菜单中选择【新建数据库角色】,则出现【新建数据库角色】对话框,如图。 图10-16 “数据库角色—新建”对话框 2.应用程序角色 应用程序角色只使用应用程序,因而不需要把权限直接赋予用户,所以应用程序角色没有任何成员。此外需要为应用程序设置一个口令来激活它。 应用程序角色可以加强对某个特定的应用程序的安全。这些角色允许应用程序自己代替SQL Server接管用户身份验证的职责。比如,如果公司中的员工只是使用某个特定的应用程序(而不是使用Transact-SQL语句或其他任何工具)来修改员工的数据信息,那么就可以为它创建一个应用程序角色。 当应用程序角色被应用程序的会话激活以用于连接时,在连接期间,会话就失去了登录、用户账户或所有数据库中的角色的权限。 10.2 账户和角色 3.public数据库角色的权限 public角色是一种特殊的固定数据库角色,当在数据库添加新用户帐户时,SQL Server会自动将新用户帐户加入public数据库角色中,即数据库的每个合法用户都属于该角色。 public角色为数据库中的用户提供了所有默认权限。 对于用户建立的数据库对象, public角色默认是不设置权限。 public角色为数据库中的所有用户都保留了默认的权限,因此是不能被删除的。 10.2 账户和角色 10.2.4 用户和角色的权限问题 用户是否具有对数据库存取的权利,要看其权限设置而定,但是,它还要受其所属角色的权限的限制。 10.2 账户和角色 1. 用户权限继承角色的权限 用户对数据库对象的存取权限继承于所属角色。假如用户User1属于角色Role1,角色Role1已经取得对表Table1的SELECT权限,则用户User1也自动取得对表Table1的SELECT权限,如果角色Role1对表Table1没有INSERT权限,而用户User1取得了对表Table1的INSERT权限,则角色Role1最终也取得对表Table1的INSERT权限。 拒绝权限优先,只要角色Role1和用户User1中的之一拒绝,则该权限就是拒绝。 10.2 账户和角色 2. 用户分属不同角色 如果一个用户分属于不同的数据库角色,例如,用户User1即属于角色Role1,又属于角色Role2,则用户User1的权限是以Role1和Role2的并集为准。但是只要有一个拒绝,则用户User1的权限就是拒绝。 10.2 账户和角色 在SSMS中,展开【服务器】、【数据库】和【安全性】,单击【用户】图标,在页框中将显示数据库的所有用户。 右击要进行许可设置的【用户】,从弹出菜单中选择【属性】,出现【数据库用户属性】对话框,选择【安全对象】,如图。 单击【添加】按钮,则弹出【添加对象】对话框,如左下图所示。选择【特定对象】单选钮后,出现如右下图所示的对话框。 点击【确定】后则出现左下图的对话框,在该框中可进行对象许可的设置。 点击对话框底部【列权限】按钮,出现右下图所示对话框,在该对话框中可选择用户对哪些列具有哪些权限;单击【确定】即可完成许可的设置。 在选项页【常规】中,在【数据库角色成员身份】中选择一个数据库角色,就完成了数据库用户语句许可的设置。 图10-14 表属性中的权限对话框 在SSMS中展开【服务器】、【数据库】和【具体数据库】,选择需要设置的用户对象,即表、视图等。 右击该对象,从弹出菜单中选择【属性】,在弹出的该对象对话框中选择【权限】,单击【添加】按钮设置好相应的对象许可后,如图;单击【确定】即可。 (2)面向数据库对象的许可设置: 架构 命名空间将相关对象组织在一起,从而使复杂的对象列表更加方便管理。 SQL Server 2005 使用架构对数据库对象实现了类似的概念。 提问: 在数据库中专门有名为 student_id 的表用来统计学生的学号和姓名,现在的问题就是每一届的学生数据都会存在这样一张同名的表,这可能会给查询带来困难。 举例:针对上面的情况,数据库将不知道如何区分 2006 级的学生和 2007 级的学生。如何解决这一问题呢? 架构 举例:我们以每一届的学生建立架构,要查找 2007 级的学生学号时,在这个数据库中就可以通过 2007.student.id 来找到合适的表了。 架构:是数据库对象的命名空间。换言之,
文档评论(0)