一个权限的设置,你会混淆么
实验环境;
1 创建一个schema
CREATE SCHEMA [Sales] AUTHORIZATION [dbo]
2 创建两个表,一个视图,一个存储过程
CREATE TABLE [Sales].[Customer](
[Customer_ID] [int] NOT NULL,
[Customer_Name] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL,
CONSTRAINT [PK_Sales.Customer] PRIMARY KEY CLUSTERED
(
[Customer_ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [Sales].[CustomerContacts](
[Customer_ID] [int] NOT NULL,
[Customer_Address] [nvarchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [Sales].[CustomerContacts] WITH CHECK ADD CONSTRAINT [FK_CustomerContacts_Customer] FOREIGN KEY([Customer_ID])
REFERENCES [Sales].[Customer] ([Customer_ID])
CREATE VIEW [Sales].[ContactList]
AS
SELECT Sales.Customer.Customer_ID, Sales.Customer.Customer_Name, Sales.CustomerContacts.Customer_Address
FROM Sales.Customer INNER JOIN
Sales.CustomerContacts ON Sales.Customer.Customer_ID = Sales.CustomerContacts.Customer_ID
CREATE PROCEDURE [Sales].[GetContact]
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
-- Insert statements for procedure here
SELECT * from Sales.ContactList
END
3 创建一个login
CREATE LOGIN [SaleA] WITH PASSWORD=N'password', DEFAULT_DATABASE=[MyDB], DEFAULT_LANGUAGE=[us_english], CHECK_EXPIRATION=OFF, CHECK_POLICY=OFF
这个时候使用SaleA登录MyDB是没有任何权限的。执行下列命令会得到4个错误
select * from Sales.Customer
select * from Sales.CustomerContacts
select * from Sales.ContactList
exec Sales.GetContact
错误信息:
Msg 229, Level 14, State 5, Line 1
SELECT permission denied on object 'Customer', database 'MyDB', schema 'Sales'.
Msg 229, Level 14, State 5, Line 2
SELECT permission denied on object 'CustomerContacts', database 'MyDB', schema 'Sales'.
Msg 229, Level 14, State 5, Line 3
SELECT permission denied on object 'ContactList', database 'MyDB', schema 'Sales'.
Msg 229, Level 14, State 5, Procedure GetContact, Line 1
EXECUTE permission denied on object 'GetContact', database 'MyDB', schema 'Sales'.
但是你如果赋予SaleA执行存贮过程的权限,你就可以得到访问到sp所对应的视图,视图所对应的表的内容了。
我开始是以为SaleA的权限应该包含试图的select权限的。唉,真是实践一下,才能知道不是这个样子的。
这样的设计应该是为了了管理的方便,如果需要级联权限,肯定会晕掉的,这样的简洁明了的方式之值得我们学习和应用到其他的设计中去的
一个权限的设置,你会混淆么相关推荐
- windows IIS权限经典设置教程
根据最新的黑客攻击方法显示,如果在IIS的站点属性打开了"写入"权限,则被黑是轻而易举的事. 前 言 根据最新的黑客攻击方法显示,如果在IIS的站点属性打开了"写入&qu ...
- cisco 路由器访问权限的设置
cisco 路由器访问权限的设置 理解Privilege级别的含义 默认情况下Cisco IOS命令行模式下支持两种级别的接入命令user EXEC(级别1)模式和privileged EXEC(级别 ...
- SUID SGID LINUX 权限安全设置
于用户在UNIX下经常会遇到SUID.SGID的概念,而且SUID和SGID涉及到系统安全,所以用户也比较关心这个问题.关于SUID. SGID的问题也经常有人提问,但回答的人一般答得不够详细,加上曾 ...
- Linux 权限管理: 权限的概念、权限管理、文件访问权限的设置、 粘滞位
Linux下的基本指令 目录: 权限的概念 权限管理 文件访问权限的设置方法 目录的权限 粘滞位 权限的概念 Linux下用户有两种: 超级用户(root).普通用户. 超级用户:具有最高权限,可以在 ...
- 文件服务器访问权限分配,设置文件服务器的访问权限
概要:问:在局域网中,使用Windows 2000 Sever提供文件服务,现准备将服务器升级为域控制器,并重新分配客户端权限.请问服务端权限又如何设置?答:解决方案大致如下:第一步,必须把服务器升级 ...
- 在命令行下对ntfs分区文件夹权限的设置
随着Windows XP/Server 2003的流行,越来越多的用户开始选择NTFS文件系统,NTFS的好处自然是大大增强了系统的安全性,在"安全"标签页下, 我们可以在这里为不 ...
- php 目录555 权限_CMS网站安全权限划分设置教程
DiYunCMS(帝云CMS)-免费开源可商用的PHP万能建站程序 CMS网站安全权限划分设置教程 网站安全是网站搭建运营过程中非常重要的一部分,DiYunCMS非常注重安全,开发了强大的安全功能.本 ...
- 如何设计一个权限系统
本文来说下如何设计一个权限系统 文章目录 概述 权限模型 RBAC0模型 RBAC1模型 RBAC2模型 RBAC3模型 用户组 组织 职位 含有组织/职位/用户组的模型 授权流程 表结构 权限框架 ...
- 怎样设置mysql软件用户_mysql数据库用户的权限如何设置?
mysql数据库用户的权限如何设置?考虑到数据库的安全在将数据库的登录名和密码给别人时我们通常都需要为用户设置数据库的权限,那么mysql数据库用户的权限如何设置呢?小编为大家带来了用phpmyadm ...
最新文章
- 如何更好的招聘软件测试人员?
- python如何在循环中保存文件_Python中如何将爬取到的数据循环存入到csv文件中?...
- 移位操作提高代码的可读性_本地记录或类,以提高流操作的可读性
- python编辑邮件格式_python发送邮件模板
- 关于xrdp的安装设置
- 文件下载及web文件的contentType类型大全
- oracle安装检测空间china,oracle安装 - Ginn的个人空间 - OSCHINA - 中文开源技术交流社区...
- datatable 参数详细说明
- c++下字符串分割函数split实现
- SpringBoot整合shiro的一个例子
- cad边长提取lisp_用lisp怎么提取cad中文字-内容-*通用符匹配(值 :设定)生成excel文件...
- VBA的userform 相关的基本事件,方法和属性,以及 userform.name 使用规范备忘
- 什么是二进制数?二进制数是如何表示计算机信息的?
- android studio 圆形头像,Android Studio实现带边框的圆形头像
- 纯前端实现页面的回到顶部和回到底部功能
- Elasticsearch系列—倒排索引原理
- 我们为什么做Banana Pi开源硬件项目:
- 数据库课程设计——学生宿舍信息管理系统
- 推荐:基于.NET写的本地搜索工具-EverythingToolbar
- Uva509 RAID