数据库实验二

数据库登陆名和数据库用户名

联系如下:

登录名可以理解为进入整个大楼的钥匙,用户名可以理解为一个房间的钥匙。这里所说的大楼就是sql server服务器,而房间就是这个sql server服务器中的具体的库。

区别如下:

1、映射关系不同

一个登录名可以和多个不同库下的用户做映射。

在同一个库下只能和一个用户做映射,并且一个用户名可以和多个登录名有映射关系。
就是一个登录名在一个数据库下面只能映射一个用户名,而在不同数据库下面可以创造不同的用户名。一个登录名可以登录多个数据库。

2、权限不同

真正有权限的是用户名,登录名只有登进数据库的功能,然后去找映射的用户名,这样就有了相应的权限。

–查找当前的数据库的用户名
SELECT DP.name as[user_name],SP.name as [logion_name]
FROM ST.sys.database_principals DP ,ST.sys.server_principals SP
WHERE SP.sid = DP.sid (其中ST为当下的数据库名)

数据库安全性

数据库账户的添加、删除
对账户进行授予权限、收回权限。

1.create login kang with password=‘a@123456’, default_database=ST;–创建登陆账户,默认连接到ST的数据库。

2.create user kang for login kang with default_schema=dbo;–创建数据库用户,并且指定scheme为dbo,这意味着 用户“kang” 在执行“select * from t”,实际上执行的是 “select * from dbo.t”。
–如果一个用户me创建了一个table表,另一个用户you调用table时,要用me.table,如果你不知道是哪个用户,但是如果你指定dbo,只需要用dbo.table.

3.exec sp_addrolemember ‘db_owner’, ‘kang’;–通过加入数据库角色,赋予数据库用户“kang”权限,此时,kang 就可以全权管理数据库 ST 中的对象了。
–删除数据库用户角色
exec sp_droprolemember ‘db_owner’,‘sharkUser01’
也可以使用
grant select,update,insert on 数据表名称 to 用户名
revoke select,update,insert on student from qiang;
添加具体的权限
4. SELECT DP.name as[user_name],SP.name as [logion_name]
FROM ST.sys.database_principals DP ,ST.sys.server_principals SP
WHERE SP.sid = DP.sid --查找当前的数据库的用户名

  1. exec sp_helprotect @username=‘qiang’;查看qiang用户的权限

  2. revoke select,update,insert on student from qiang;删除qiang这个用户对student表的某些权限

  3. drop login qiang;–删除数据库登陆账户
    zhe在这里插入图片描述
    这个是数据库用户角色,对应第三点。
    在赋予权限的时候,必须在管理员权限下。

(2)触发器,存储过程的使用
创建存储过程并执行

在这里插入图片描述
在执行存储过程中,output关键字必须加,不然会打印不出来。
而且不能不用print打印@num1,不然也会打印不出来。

创建触发器并测试效果

在这里插入图片描述

(3)数据库备份与恢复
对所创建的数据库进行备份,利用备份进行数据库恢复
在这里插入图片描述是如果数据库多个客户端在连接,在还原之前,首先要把数据库的连接方式设置为单一连接。

在这里插入图片描述

如果出现这个报错,你需要选择覆盖现有的数据库。

在这里插入图片描述
在这里插入图片描述

实验小结:

  1. 在第一个实验中,创建账户后,必须更改连接,切换用户。对用户授权必须在有管理员权限的情况下才能对新建用户更改权限。
  2. 在第二个小实验的时候,又犯了外键插入错误。
  3. 对用户名和登录名的理解。
发布了20 篇原创文章 · 获赞 11 · 访问量 3692
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章