1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 【数据库原理实验(openGauss)】 安全性控制

【数据库原理实验(openGauss)】 安全性控制

时间:2023-12-17 14:02:33

相关推荐

【数据库原理实验(openGauss)】 安全性控制

安全性控制

文章目录

安全性控制一、用户及角色(1)用户(2)角色二、权限设置及回收1.将系统权限授权给用户或者角色2.将数据库对象授权给角色或用户3.将用户或者角色的权限授权给其他用户或角色4.权限回收并清理用户

一、用户及角色

(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 INTEGERNOT NULL,r_reason_id CHAR(16) NOT NULL,r_reason_descVARCHAR(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;

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。