天天看点

T-Sql(七)用户权限操作(grant)

  一般数据库的权限操作我们很少用,除非一些大型的项目,需要给数据库配置不同的用户及权限,防患于未然,今天我们就来了解下t-sql中配置用户权限操作。

  先看示例代码:

  这些语法都很简单我们主需要记住就行,当然通过SQLSERVER的可视化界面也可以配置。

  下面我们也通过一个实例来理解和运用配置用户权限。

  实例要求:

    1.建立两个用户,user1,user2

    2.user1具有操作数据库ExamMis的所有权限

    3.转换上下文到USer1下,建立一个函数:f_GetQuestionDetails,该函数返回题目内容(包括题干,分题项,题型三个表的关联内容)

    4.赋权限给user2:让其只具有执行该函数的权限;

    5.转换上下文到user2,执行函数调用。

  创建两个登陆名,并在为登陆名创建user1和user2用户。

  示例代码:

  这个操作有三种方法:

    1,SQLSERVER可视化操作。

    2,grant all去给用户分配权限。

    3,通过SQLSERVER系统自带的存储过程分配权限。

  这里我们先讲一下grant的用法,grant是用来给用户分配权限用的。

  我们先看一个示例代码:

  这段代码的意思就是给User1分配具有操作ExamMis数据库的一切权限。all关键字的意思是所有权限,也可以指定某一权限,比如查询权限就可以写grant select,

  当然 on 后面也可以是表,函数,存储过程,视图等。

   这段代码的意思是给用户user1在student表分配具有查询,插入,更新的权限,但是没有删除得权限。

  通过SQLSERVER系统自带的存储过程分配权限,示例代码:

   sp_addrolemember是系统自带的存储过程,db_owner的意思是所有者,可视化操作的时候我们也会看到。当然还有一些其他的一些存储过程,在文章的后面会给大家整理出来。

  执行上下面到User1下:

  我们可以通过select USER_NAME(); 来查看当前用户名。

  下面我们创建函数:f_GetQuestionDetails,函数具有返回值,返回table。

  函数的用法很简单,就不单列去讲解了,和我们编程时候用的方法类似,只是语法不同而已,大家熟悉用就行。

  这一步我们可以直接用上面提到的grant去给用户user2分配权限。

  这里我们就多做一部,创建一个角色,然这个角色具有操作这个函数的权限,然后把角色分配给用户user2。

  一般我们项目的权限管理都是这个设计:用户->角色->权限。

  REVERT;的意思是切换上下文。

   执行完操作我们把登陆名,用户名删掉:

  t-sql中的用户权限配置就讲到这,这一部分的内容我们很少去涉及,但是还是了解一些,说不准哪天DB不在,经理让你去配数据库用户呢,编程的都不会,就你会,自己是不是很有面子啊。哈哈。

  以后继续整理一下编程相关的知识,请大家多多关注。。。