数据库原理实验(openGauss) 安全性控制
Posted BkbK-
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库原理实验(openGauss) 安全性控制相关的知识,希望对你有一定的参考价值。
安全性控制
文章目录
一、用户及角色
(1)用户
- 通过CREATE USER创建的用户,默认具有LOGIN权限;
- 通过CREATE USER创建用户的同时系统会在执行该命令的数据库中,为该用户创建一个同名的SCHEMA;
- 其他数据库中,则不自动创建同名的SCHEMA;用户可使用CREATE SCHEMA命令,分别在其他数据库中,为该用户创建同名SCHEMA。
创建、修改、删除用户:
-
创建用户jim,登录密码为Bigdata@123。
CREATE USER jim PASSWORD 'Bigdata@123';
-
查看用户列表
SELECT * FROM pg_user;
-
为用户jim追加有创建角色的CREATE ROLE权限
ALTER USER jim CREATEROLE;
-
删除用户
DROP USER jim CASCADE;
(2)角色
- 角色是拥有数据库对象和权限的实体。在不同的环境中角色可以认为是一个用户,一个组或者兼顾两者。
- 在数据库中添加一个新角色,角色无登录权限。
- 创建角色的用户必须具备CREATE ROLE的权限或者是系统管理员。
创建、修改、删除角色:
-
创建一个角色,名为manager,密码为Bigdata@123
CREATE ROLE manager IDENTIFIED BY 'Bigdata@123';
-
查看角色
SELECT * FROM PG_ROLES;
-
修改角色manager的密码为abcd@123。
ALTER ROLE manager IDENTIFIED BY 'abcd@123' REPLACE 'Bigdata@123';
-
修改角色manager为系统管理员
ALTER ROLE manager SYSADMIN;
-
删除角色manager
DROP ROLE manager;
二、权限设置及回收
1.将系统权限授权给用户或者角色
-
创建名为joe的用户:
CREATE USER joe PASSWORD 'Bigdata@123';
-
将sysadmin权限授权给joe:
GRANT ALL PRIVILEGES TO joe;
-
撤销joe用户的sysadmin权限
REVOKE ALL PRIVILEGES FROM joe;
2.将数据库对象授权给角色或用户
-
创建tpcds模式
CREATE SCHEMA tpcds;
-
tpcds模式下创建一张reason表
CREATE TABLE tpcds.reason ( r_reason_sk INTEGER NOT NULL, r_reason_id CHAR(16) NOT NULL, r_reason_desc VARCHAR(20) );
-
将模式tpcds的使用权限和表tpcds.reason的所有权限授权给用户joe
GRANT USAGE ON SCHEMA tpcds TO joe;
GRANT ALL PRIVILEGES ON tpcds.reason TO joe;
-
将tpcds.reason表中r_reason_sk、r_reason_id、r_reason_desc列的查询权限,r_reason_desc的更新权限授权给joe
GRANT select (r_reason_sk,r_reason_id,r_reason_desc),update (r_reason_desc) ON tpcds.reason TO joe;
-
将数据库postgres的连接权限授权给用户joe,并给予其在postgres中创建schema的权限,而且允许joe将此权限授权给其他用户
GRANT create,connect on database postgres TO joe WITH GRANT OPTION;
-
创建角色tpcds_manager
CREATE ROLE tpcds_manager PASSWORD 'Bigdata@123';
-
将模式tpcds的访问权限授权给角色tpcds_manager,并授予该角色在tpcds下创建对象的权限,不允许该角色中的用户将权限授权给其人
GRANT USAGE,CREATE ON SCHEMA tpcds TO tpcds_manager;
查看表reason权限:
SELECT * FROM information_schema.table_privileges WHERE table_name='reason';
3.将用户或者角色的权限授权给其他用户或角色
-
创建角色manager
CREATE ROLE manager PASSWORD 'Bigdata@123';
-
将joe的权限授权给manager,并允许该角色将权限授权给其他人
GRANT joe TO manager WITH ADMIN OPTION;
-
创建用户senior_manager
CREATE ROLE senior_manager PASSWORD 'Bigdata@123';
-
将用户manager的权限授权给该用户
GRANT manager TO senior_manager;
4.权限回收并清理用户
-
逐步回收manager权限
REVOKE joe FROM manager;
REVOKE manager FROM senior_manager;
-
删除manager用户
DROP USER manager;
-
逐步回收joe权限
REVOKE ALL PRIVILEGES ON tpcds.reason FROM joe;
REVOKE ALL PRIVILEGES ON SCHEMA tpcds FROM joe;
-
逐步回收tpcds_manager权限
REVOKE USAGE,CREATE ON SCHEMA tpcds FROM tpcds_manager;
-
删除 tpcds_manager用户
DROP ROLE tpcds_manager;
-
删除senior_manager用户
DROP ROLE senior_manager;
-
删除joe用户
DROP USER joe CASCADE;
以上是关于数据库原理实验(openGauss) 安全性控制的主要内容,如果未能解决你的问题,请参考以下文章