掌握创建数据库用户的方法掌握用户权限的分配与回收.docx
《掌握创建数据库用户的方法掌握用户权限的分配与回收.docx》由会员分享,可在线阅读,更多相关《掌握创建数据库用户的方法掌握用户权限的分配与回收.docx(24页珍藏版)》请在冰豆网上搜索。
掌握创建数据库用户的方法掌握用户权限的分配与回收
数据库系统原理实验报告一、实验目的
1.理解数据库的安全机制。
2.掌握创建数据库用户的方法。
3.掌握用户权限的分配与回收。
4.掌握使用角色实现数据库安全性的方法。
二、实验内容
1、数据库用户的添加
2、用户权限的分配与回收
3、角色的创建与管理
说明:
PostgreSQL权限分为两部分,一部分是“系统权限”或者数据库用户的属性;一部分为数据库对象上的操作权限。
PostgreSQL中用户都以‘角色’的方式进行管理,角色都以“组角色”的方式进行管理。
用户和角色的区别是角色没有login权限。
三、实验步骤
1.创建之前实验中使用的数据表(Student,Course,SC)或者(Employee、Salary,Department)。
代码:
CREATETABLEEmployee_1511630117
(
EmployeeIDCHAR(6)NOTNULLPRIMARYKEY,
NameCHAR(10)NOTNULL,
BirthdayDateNOTNULL,
SexBit
(1)NOTNULL,
AddressCHAR(20),
ZipCHAR(6),
PhoneNumberCHAR(12),
EmailAddressCHAR(30),
DepartmentIDCHAR(3)NOTNULL,
FOREIGNKEY(DepartmentID)REFERENCES
departments_1511630117(DepartmentID)
)
CREATETABLEDepartments_1511630117
(
DepartmentIDCHAR(3)NOTNULLPRIMARYKEY,DepartmentNameCHAR(20)NOTNULL,
NoteCHAR(16)
)
CREATETABLESalary_1511630117
(
EmployeeIDChar(6)NOTNULL,
FOREIGNKEY(EmployeeID)REFERENCESEmployee_1511630117(EmployeeID),IncomeFloat(8)NOTNULL,
OutComeFloat(8)NOTNULL
)
2.创建新用户
createuseruser_1511630117password'xbs5417';
(a)查看对象浏览器中“登录角色”里面会出现刚刚创建的新用户(需要刷新)。
(b)点击刚刚创建的用户,查看左侧窗口中出现的用户的属性,注意该用户是否具有登录
权限。
3.创建角色
createrolerole_1511630117;
(a)查看对象浏览器中“组角色”里面会出现刚刚创建的角色(需要刷新)。
(b)点击刚刚创建的用户,查看左侧窗口中出现的角色的属性,注意该角色是否具有登录
权限。
4.使用新创建的用户名和密码连接数据库,新建一个连接(新命名)。
在下面
的
窗口输入相关的信息。
登录之后,输入一个查询语句,查询任意一个表中的信息。
查看执行的结果,并分析原
因。
select
departmentid,name,birthday,sex,address,zip,PhoneNumber,EmailAddress,Departme
ntID
fromemployee_1511630117;
原因:
图中以显示,权限不够
5.使用默认的postgres用户的连接(原有的那个),重新连接数据库。
四、实验任务
1.把查询employee表的权限授给新用户”user_1511630117”。
grantselect
onemployee_1511630117
touser_1511630117;
2.把表的全部权限授予新用户”user_1511630117”。
grantallprivileges
ondepartments_1511630117
touser_1511630117;
3.
像上面的步骤4一样,利用新用户连接数据库,并向
employee_1511630117表插入一条数据。
如何处理?
insertinto
employee_1511630117(employeeid,name,birthday,sex,address,zip,phonenumber,e
mailaddress,departmentid)
values('1001','许秉圣','19961204','0','天津
','475001','3880378','xbs@','1');
如何处理:
给予employee_1511630117插入权限即可Grantinsert
Onemployee_1511630117
Touser_1511630117;
授予权限后再次插入,显示成功。
4.
利用默认账户连接数据库,再创建两个新的用户,”user_1511630117_2”,
“user_1511630117_3”
createuseruser_1511630117_2password'xbs5417';
createuseruser_1511630117_3password'xbs5417';
5.
把查询
Employee
表和修改employeeid的权限授给用户”
user_1511630117_2”
grantselect,update
onemployee_1511630117
touser_1511630117_2;
6.把对表Salary_1511630117的查询权限授予所有用户GRANTSELECT
ONTABLESalary_1511630117
TOPublic;
7.把对表Salary_1511630117的INSERT权限授予用户”user_1511630117”,并允许他再将此权限授予其他用户。
GRANTINSERT
ONSalary_1511630117
TOuser_1511630117
WITHGRANTOPTION;
8.
把用户”user_1511630117_2”修改employeeid权限收回,利用”
user_1511630117_2”连接数据库;验证更新employeeid的操作是否能够进行。
收回权限:
revokeall
onTABLEemployee_1511630117
fromuser_1511630117_2;
在user_1511630117_2上更新employeeidupdateemployee_1511630117
setemployeeid='2001'
whereemployeeid='1001';
因为权限已经收回,所以显示错误
9.
收回所有用户对表Salary_1511630117的查询权限,利用”
user_1511630117_2”连接数据库验证查询操作是否能够进行。
回收权限:
revokeall
onTABLESalary_1511630117
frompublic;
利用”user_1511630117_2”连接数据库验证查询操作是否能够进行:
select
employeeid,name,birthday,sex,address,zip,PhoneNumber,EmailAddress,Department
ID
fromemployee_1511630117;
因为权限已经收回,所以显示错误
10.收回新创建的用户的所有权限。
revokeall
onTABLEemployee_1511630117,departments_1511630117,salary_1511630117
frompublic;
11.创建角色role_1511630117createrolerole_1511630117
12.将Employee_1511630117表的SELECT、UPDATE、INSERT权限授予新创建的角色”role_1511630117”。
grantselect,update,insert
onemployee_1511630117
torole_1511630117;
13.将新建的角色role_1511630117授予用户”user_1511630117”,并进行验证是否拥有相应的权限
grantrole_1511630117
touser_1511630117;
验证是否拥有相应的权限
查询:
select
employeeid,name,birthday,sex,address,zip,PhoneNumber,EmailAddress,Department
ID
fromemployee_1511630117;
更新:
updateemployee_1511630117
setzip=475002
wherezip='475001'
插入:
insertinto
employee_1511630117(employeeid,name,birthday,sex,address,zip,phonenumber,e
mailaddress,departmentid)
values('1002','许秉圣','19961204','0','天津
','475003','3880355','xbs@','1');
14.
将新建的角色
role_1511630117授予用户”user_1511630117_2”和”
user_1511630117_3”
grantrole_1511630117
touser_1511630117_2;
grantrole_1511630117
touser_1511630117_3;
15.从“user_1511630117_3”中收回角色“role_1511630117”拥有的三个权限。
Revokerole_1511630117
fromuser_1511630117_3;
16.为角色”role_1511630117”增加employee_1511630117表的DELETE权限。
grantdelete
onemployee_1511630117
torole_1511630117
17.从角色”role_1511630117”收回employee_1511630117表的select权限。
revokeselect
onTABLEemployee_1511630117
fromrole_1511630117;
18.删除创建的角色role_151160117。
droprolerole_1511630117;
最开始删除不了,因为employee_1511630117对其有依赖,解决办法在后遇到的问题详述。
19.删除创建的用户。
dropuseruser_1511630117_3;
5、思考数据库中对象的权限类型有哪些?
决定用户对数据库对象所执行的操作,包括用户对数据库中的表、视图、列或存储过程等对象的操作权限(查询、插入、更新、删除)
六、记录在实验过程中遇到的问题、解决办法及心得体会。
遇到的问题:
删除创建的角色role_151160117时显示有表对其有依赖不能删除,如图所示:
解决办法:
回收role对employee表的其它权限:
Revokeupdate,insert,delete
Ontableemployee_1511630117
Fromrole_151163017;
再执行droprolerole_1511630117;即可删除角色role_1511630117
心得体会:
通过这次试验熟练了数据库用户的添加、用户权限的分配与回收、角色的创建与管理。
在过程中遇到的较重要的问题就是回收角色时没有注意权限的问题,以后试验时会更加关注于细节。