【数据库原理实验(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 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)】 安全性控制相关推荐
- 【数据库原理实验(openGauss)】实验报告
<数据库系统原理实验>报告 文章目录 <数据库系统原理实验>报告 一.实验课程性质和教学目标 二.实验课程教学基本要求 三.实验教学内容 实验一 认识DBMS系统 (一)实验目 ...
- 【数据库原理实验(openGauss)】金融场景化实验
金融场景化实验 文章目录 金融场景化实验 一.金融数据模型 1.E-R图 2.关系模式 3.物理模型 Client(客户)表 bank_card(银行卡)表 finances_product(理财产品 ...
- 【数据库原理实验(openGauss)】交互式SQL语句
交互式SQL语句 文章目录 交互式SQL语句 一.数据准备 (1)向Departments中写入数据 (2)向Teachers中写入数据 (3)向Students中写入数据 (4)向Courses中写 ...
- 【数据库原理实验(openGauss)】 使用JDBC连接数据库
使用JDBC连接数据库 文章目录 使用JDBC连接数据库 一.准备连接环境 1.修改数据库的pg_hba.conf文件 2.登陆数据库授权退出 3.修改数据库监听地址 4.下载Java驱动包导入工具 ...
- 【数据库原理实验(openGauss)】数据库的备份与恢复
数据库的备份与恢复 文章目录 数据库的备份与恢复 一.物理备份和恢复 实验准备: (1)物理备份 (2)物理备份恢复 二.逻辑备份和恢复 实验准备: (1)gs_dump备份 1.gs_dump备份示 ...
- 【数据库原理实验(openGauss)】事务与并发控制
事务与并发控制 文章目录 事务与并发控制 一.事务 (1)事务的ACID特性 (2)事务管理 (3)事务实例 1.未提交的事务 2.已提交的事务 二.并发控制 (1)加锁语法 (2)加锁实例 一.事务 ...
- 【数据库原理实验(openGauss)】视图
视图 文章目录 视图 一.创建视图 二.基于视图的查询 三.基于视图的更新 四.删除视图 五.对视图的理解 一.创建视图 CREATE VIEW CS_Students AS SELECT Sno, ...
- 【数据库原理实验(openGauss)】认识DBMS系统
认识DBMS系统(openGauss) 文章目录 认识DBMS系统(openGauss) 一.openGauss安装目录 (1)集群openGauss安装目录 (2)集群openGauss数据目录 ( ...
- 【数据库原理实验(openGauss)】创建数据库、表和索引
创建数据库.表和索引 文章目录 创建数据库.表和索引 一.创建数据库 二.创建与删除模式 三.创建与修改表 (1)创建表 (2)修改表 四.创建与删除索引 (1)创建索引 (2)删除索引 一.创建数据 ...
最新文章
- struts2上传图片的全过程
- 如何查看linux函数对应的库文件
- 将C1Chart数据导出到Excel
- [YTU]_2354 (实现复数类中的加运算符重载【C++运算符重载】)
- Hyperledger Fabric1.0架构概览
- Git之深入解析如何使用Git的分布式工作流程与如何管理多人开发贡献的项目
- 多线程 转账_多线程编程不可错过——彻底理解volatile
- GAN + Video Inpainting的一些思考和相关论文
- linux免密后还是要输密码,ssh配置免密后依然需要输入密码的问题解决及排查过程...
- 数据分析师必须会python_数据分析师必须掌握的9种数据分析方法
- oracle 闪查询,Oracle的回闪查询
- 【Scala】使用Scala语言定义函数和函数使用(比较两个数的大小代码)
- 【Android】spannableStringBuilder
- 100 美元一行代码,开源软件到底咋赚钱?
- winform mysql 客户端_Winform+Mysql登录
- Android Studio第三十五期 - 定时器弱引用+Service的写法
- ad13批量安装元件库_别人的altium designer常用元件库和封装库下载-非常全面初学者有福了...
- 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做
- LTE系统信息 --- MIB、SIB
- 服务器CPU和普通CPU有什么区别?常用的服务器有六大区别
热门文章
- educoder MongoDB 实验——数据库优化
- java 程序打包成jar_把Java程序打包成jar文件包并执行的方法
- python立方尾不变代码_对于这个蓝桥杯立方尾不变题我用java程序做的,正确结果应该是36,为什么我这样写结果就是12,如...
- jetson windows_生命不息,折腾不止:Jetson Nano填坑之软件篇
- maya 替换名称_maya替换对象,MAYA
- c语言 取随机字符串,C语言之获取32字节随机数的字符串
- html展示值 vue_vue在html使用
- linux 网络监控 邮件,一种基于Linux的邮件监控方法与流程
- c语言srand函数怎么用_Excel统计指定内容出现次数,用函数怎么写?人人都能看懂的公式...
- R语言重抽样与自助法