SQL创建和管理登录用户,数据库用户方法的方法

1.	创建新的SQL SERVER登录账号,登录名为usersf,密码为123。

操作:
--(1)使用存储过程完成
EXEC sp_addlogin 'usersf','123'
--(2)用sql语句创建
create login usersf1 with password='123'
--(3)使用SSMS创建登录名
--安全性下面右击登录名

2.	为student数据库新建用户u1,其登录名为usersf。

操作:
--(1)使用存储过程完成
EXEC sp_adduser 'usersf','u1'
--(2)用sql语句创建
--1.
create user u1 from login  usersf 
--2.
create user u1 for login  usersf 

3.	将登录usersf加入到sysadmin固定服务器角色中。

操作:

EXEC sp_addsrvrolemember 'usersf','sysadmin'
--注:添加newuser为角色newrole的成员
--EXEC sp_addrolemember 'newrole','newuser',注意对比数据库角色和服务器角色的不同sp_addrolemember||sp_addsrvrolemember。


4.	将student用户u1加入到db_owner角色中,使其全权负责该数据库,并验证其权限。

操作:
EXEC sp_addrolemember 'db_owner','u1'

5.	为SPJ数据库新建用户u2,其登录名为user1。

操作:
--(1)使用存储过程完成
EXEC sp_addlogin 'user1','123','SPJ'
EXEC sp_adduser 'user1','u2'
--(2)用sql语句创建
create login user2 with password='123',default_database=spj
create user u3 for login  user2


6.使用GRANT语句完成如下功能:
(1)授予用户u2对S表有SELECT 权,对P表颜色(COLOR)具有更新权限;

操作:
GRANT 
SELECT on dbo.s
TO u2
GRANT 
UPDATE ON dbo.p(color)
TO u2

(2)将对J表的查看权限授予所有用户;
操作:

GRANT 
SELECT ON J
TO PUBLIC

(3)将对SPJ表的查询、更新权限授予角色R1;

操作:

--1. 首先创建一个角色 R1
CREATE  ROLE  R1
--2. 然后使用GRANT语句,使角色R1拥有spj表的SELECT、UPDATE权限
GRANT SELECT,UPDATE
ON spj 
TO R1


(4)将角色R1授予用户u2;
操作:
GRANT  R1 
TO u2
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181120231100772.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTg1OTk5,size_16,color_FFFFFF,t_70)
解释:SQL不能用grant 角色 to 用户。

正解:
操作:
exec sp_addrolemember 'r1', 'u2'
结果:
 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20181120231134383.png)



(5)逐一验证u2所获得的权限。
1.对于u2没有的权限,结果如下:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181120231432533.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTg1OTk5,size_16,color_FFFFFF,t_70)

对于u2有的权限:
--(1)对s表的select权
select *
from dbo.s
结果:
![在这里插入图片描述](https://img-blog.csdnimg.cn/20181120231800147.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQyMTg1OTk5,size_16,color_FFFFFF,t_70)

--(2)对p表color有更新权
update dbo.p
set p.color = '0'

--(3)对j表的查看权限
select *
from dbo.j

--(4)对spj表的查询权限
select *
from dbo.spj

--(5)对spj表的更新权限
update dbo.spj
set sno='000'
where sno=null





你可能感兴趣的:(数据库)