芯が強い人になるESTJ-A

# sql权限分配

IT開発 Tags: 无标签 阅读: 229

授权命令 grant,语法格式(SQL语句不区分大小写):
Grant <权限> on 表名[(列名)] to 用户 With grant option

或 GRANT <权限> ON <数据库名.表名> to 用户名@登陆方式 identified by 'password1';

//数据对象可以是表名或列名

//权限表示对表的操作,如select,update,insert,delete

注:授权命令是由数据库管理员使用的,若给用户分配权限时带With grant option子句,

则普通用户获权后,可把自己的权限授予其他用户。

Grant单词翻译:
vt.承认;同意;准许;授予
n.拨款;补助金;授给物(如财产、授地、专有权、补助、拨款等)
vi.同意

回收权限 revoke
REVOKE <权限> ON <数据对象> FROM <数据库用户名>

revoke翻译:
vt.撤销,取消;废除 vi.有牌不跟 n.有牌不跟

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

这个操作有三种方法:

    1,SQLSERVER可视化操作。

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

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

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

  我们先看一个示例代码:


grant all 
2 on database::ExamMis
3 to User1
4 WITH GRANT OPTION

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

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

  示例代码:

grant select,insert,update
2 on table::student
3 to User1
4 WITH GRANT OPTION

函数赋权限给user2:让其只具有执行该函数的权限
这一步我们可以直接用上面提到的grant去给用户user2分配权限。

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

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

  示例代码:

create role Select_Fuction  --创建角色
2 
3 GRANT select
4    ON OBJECT::dbo.Select_Questions
5    TO Select_Fuction;
6 
7 exec sp_addrolemember 'Select_Fuction','User2'  --将Select_Fuction角色添加到User2用户中

用户权限配置系统存储过程


 7 
 8 -------------------------数据库用户管理---
 9 sp_grantdbaccess 登录号,数据库用户名
10 sp_helpuser 数据库用户名
11 sp_revokedbaccess 指定数据库用户名
12 
13 ------------------------服务器角色--------
14 sp_addsrvrolermemeber 登陆账号名,服务器角色名
15 sp_dropsrvrolermember 登陆用户名,服务器角色名
16 
17 ------------------------数据库角色---------
18 
19 sp_addrole 数据库角色名,数据库角色的所有者
20 sp_droprole 数据库角色名
21 
22 ------------创建数据库角色的成员----
23 
24 sp_addrolemember 数据库角色名,数据库用户
25 sp_droprolemember 数据库角色名,数据库用户