安全性控制

文章目录

  • 安全性控制
    • 一、用户及角色
      • (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)】 安全性控制相关推荐

  1. 【数据库原理实验(openGauss)】实验报告

    <数据库系统原理实验>报告 文章目录 <数据库系统原理实验>报告 一.实验课程性质和教学目标 二.实验课程教学基本要求 三.实验教学内容 实验一 认识DBMS系统 (一)实验目 ...

  2. 【数据库原理实验(openGauss)】金融场景化实验

    金融场景化实验 文章目录 金融场景化实验 一.金融数据模型 1.E-R图 2.关系模式 3.物理模型 Client(客户)表 bank_card(银行卡)表 finances_product(理财产品 ...

  3. 【数据库原理实验(openGauss)】交互式SQL语句

    交互式SQL语句 文章目录 交互式SQL语句 一.数据准备 (1)向Departments中写入数据 (2)向Teachers中写入数据 (3)向Students中写入数据 (4)向Courses中写 ...

  4. 【数据库原理实验(openGauss)】 使用JDBC连接数据库

    使用JDBC连接数据库 文章目录 使用JDBC连接数据库 一.准备连接环境 1.修改数据库的pg_hba.conf文件 2.登陆数据库授权退出 3.修改数据库监听地址 4.下载Java驱动包导入工具 ...

  5. 【数据库原理实验(openGauss)】数据库的备份与恢复

    数据库的备份与恢复 文章目录 数据库的备份与恢复 一.物理备份和恢复 实验准备: (1)物理备份 (2)物理备份恢复 二.逻辑备份和恢复 实验准备: (1)gs_dump备份 1.gs_dump备份示 ...

  6. 【数据库原理实验(openGauss)】事务与并发控制

    事务与并发控制 文章目录 事务与并发控制 一.事务 (1)事务的ACID特性 (2)事务管理 (3)事务实例 1.未提交的事务 2.已提交的事务 二.并发控制 (1)加锁语法 (2)加锁实例 一.事务 ...

  7. 【数据库原理实验(openGauss)】视图

    视图 文章目录 视图 一.创建视图 二.基于视图的查询 三.基于视图的更新 四.删除视图 五.对视图的理解 一.创建视图 CREATE VIEW CS_Students AS SELECT Sno, ...

  8. 【数据库原理实验(openGauss)】认识DBMS系统

    认识DBMS系统(openGauss) 文章目录 认识DBMS系统(openGauss) 一.openGauss安装目录 (1)集群openGauss安装目录 (2)集群openGauss数据目录 ( ...

  9. 【数据库原理实验(openGauss)】创建数据库、表和索引

    创建数据库.表和索引 文章目录 创建数据库.表和索引 一.创建数据库 二.创建与删除模式 三.创建与修改表 (1)创建表 (2)修改表 四.创建与删除索引 (1)创建索引 (2)删除索引 一.创建数据 ...

最新文章

  1. struts2上传图片的全过程
  2. 如何查看linux函数对应的库文件
  3. 将C1Chart数据导出到Excel
  4. [YTU]_2354 (实现复数类中的加运算符重载【C++运算符重载】)
  5. Hyperledger Fabric1.0架构概览
  6. Git之深入解析如何使用Git的分布式工作流程与如何管理多人开发贡献的项目
  7. 多线程 转账_多线程编程不可错过——彻底理解volatile
  8. GAN + Video Inpainting的一些思考和相关论文
  9. linux免密后还是要输密码,ssh配置免密后依然需要输入密码的问题解决及排查过程...
  10. 数据分析师必须会python_数据分析师必须掌握的9种数据分析方法
  11. oracle 闪查询,Oracle的回闪查询
  12. 【Scala】使用Scala语言定义函数和函数使用(比较两个数的大小代码)
  13. 【Android】spannableStringBuilder
  14. 100 美元一行代码,开源软件到底咋赚钱?
  15. winform mysql 客户端_Winform+Mysql登录
  16. Android Studio第三十五期 - 定时器弱引用+Service的写法
  17. ad13批量安装元件库_别人的altium designer常用元件库和封装库下载-非常全面初学者有福了...
  18. 学生个人网页设计作品 学生个人网页模板 简单个人主页成品 个人网页制作 HTML学生个人网站作业设计代做
  19. LTE系统信息 --- MIB、SIB
  20. 服务器CPU和普通CPU有什么区别?常用的服务器有六大区别

热门文章

  1. educoder MongoDB 实验——数据库优化
  2. java 程序打包成jar_把Java程序打包成jar文件包并执行的方法
  3. python立方尾不变代码_对于这个蓝桥杯立方尾不变题我用java程序做的,正确结果应该是36,为什么我这样写结果就是12,如...
  4. jetson windows_生命不息,折腾不止:Jetson Nano填坑之软件篇
  5. maya 替换名称_maya替换对象,MAYA
  6. c语言 取随机字符串,C语言之获取32字节随机数的字符串
  7. html展示值 vue_vue在html使用
  8. linux 网络监控 邮件,一种基于Linux的邮件监控方法与流程
  9. c语言srand函数怎么用_Excel统计指定内容出现次数,用函数怎么写?人人都能看懂的公式...
  10. R语言重抽样与自助法