【PostgreSQL】- 1.4 PostgreSQL 业务规划(创建 Schema)

业务规划与创建 Schemas

如果实际场景,有业务A、业务B、业务C,推荐的方式是在同一个数据库中为每个业务创建不同的 schema。然后,你可以为每个业务创建不同的账户,并赋予这些账户对应业务的 schema 权限。这种方式的好处是:

隔离性:不同业务的对象被隔离在不同的 schema 中,避免了命名冲突和误操作。
权限管理:可以精细地控制每个账户对各个 schema 的访问权限,实现业务间的数据隔离和安全性。
易于管理:所有业务都集中在同一个数据库中,方便进行备份、恢复和维护。

具体步骤操作:

在 mydatabase 数据库中创建三个 schema,分别命名为 schema_a、schema_b 和 schema_c,对应业务A、业务B和业务C。
创建三个账户,分别命名为 user_a、user_b 和 user_c,用于访问对应业务的 schema。
使用 GRANT 语句为每个账户赋予对应 schema 的访问权限。例如,授予 user_a 对 schema_a 的所有权限,但限制其对其他 schema 的访问。

这样,就为每个业务创建了一个独立的命名空间,并通过账户权限实现了业务间的隔离和安全性。

在 PostgreSQL 中创建 schema 和对应的账户:

创建新用户:

登录到 PostgreSQL:

使用 psql 命令行工具以超级用户(如 postgres)身份登录到你的数据库集群。

psql -U postgres

为每个业务创建一个新用户。例如,为 oa 业务创建用户 oa_user

     CREATE USER oa_user WITH PASSWORD 'my_password_here';

重复此步骤为其他业务(如 iot, erp, mis)创建用户。

创建 Schema:

为每个业务创建一个新的 schema。

    ~$ psqlpsql (15.6 (Debian 15.6-0+deb12u1))Type "help" for help.postgres=# \c mydatabaseYou are now connected to database "mydatabase" as user "postgres".mydatabase=#   mydatabase=# CREATE SCHEMA mydb_oa01 AUTHORIZATION oa_user;

这创建了名为 oa 的新 schema,并将其所有权赋予 oa_user。同样地,为其他业务创建 schema。

授予数据库账户权限:

根据需要授予用户对其 schema 的适当权限。例如,要允许 oa_user 在其 oa schema 中创建表:

GRANT CREATE ON SCHEMA oa TO oa_user;

授予其他权限,如 USAGE(允许用户使用 schema 中的对象)或 ALTER(允许用户修改 schema 中的对象),可根据业务需求规划。

授权示例:

配置 dbadmin 可以访问新建的 schema

mydatabase=# GRANT USAGE ON SCHEMA mydb_thb01 TO user_oa;
GRANT
mydatabase=# GRANT USAGE ON SCHEMA mydb_thb01 TO dbadmin;
GRANTmydatabase=# GRANT USAGE ON SCHEMA mydb_oa01 TO user_thb;
GRANT
mydatabase=# GRANT USAGE ON SCHEMA mydb_oa01 TO dbadmin;
GRANT
mydatabase=# \dn+List of schemasName      |       Owner       |           Access privileges            |      Description
--------------+-------------------+----------------------------------------+------------------------public       | pg_database_owner | pg_database_owner=UC/pg_database_owner+| standard public schema|                   | =U/pg_database_owner                   |mydb_oa01    | user_oa           | user_oa=UC/user_oa                    +||                   | user_thb=U/user_oa                    +||                   | dbadmin=U/user_oa                      |mydb_thb01   | user_thb          | user_thb=UC/user_thb                  +||                   | user_oa=U/user_thb                    +||                   | dbadmin=U/user_thb                     |
(3 rows)mydatabase=#

配置外部访问权限

编辑pg_hba.conf文件以控制访问权限, 这里参考 1.3 PostgreSQL 创建数据库(初始化) 中的 配置外部访问权限 即可。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS使用clip-path实现元素动画

前言: 在日常开发当中,如果想要开发多边形,一般都需要多个盒子或者伪元素的帮助,有没有一直办法能只使用一个盒子实现呢? 有的:css裁剪 目录 前言: clip-path到底是什么? clip-pa…

【御控物联】 JavaScript JSON结构转换(4):对象To对象——规则属性重组

文章目录 一、JSON结构转换是什么?二、术语解释三、案例之《JSON对象 To JSON对象》四、代码实现五、在线转换工具六、技术资料 一、JSON结构转换是什么? JSON结构转换指的是将一个JSON对象或JSON数组按照一定规则进行重组、筛选、映射或转换&#xff0…

赋值语句还能当判断条件?涨芝士了!

赋值和条件看似是C语言中毫不相关的两个概念,虽然实际过程中我猜测不会有太多这种不太符合常理的情况出现,但是现在在学习的过程中,为了出题而出题总是会整出一些花活出来.....这很难不让人联想起高中时一些大佬为了彰显自己的数学天赋而自己…

C++类基础7——移动构造函数,移动赋值运算符

右值引用只不过是一种新的C语法,真正理解起来有难度的是基于右值引用引申出的2种C编程技巧,分别为移动语义和完美转发。 左值、右值、将亡值: 概念: 从以下几个概念逐步深入: 表达式: 要说清“三值”&…

树莓派串口读取陀螺仪ky9250(mpu9250)数据

9轴姿态角度传感器,其中ky9250陀螺仪由于自带卡尔曼动态滤波算法方便用户使用。ky9250陀螺仪基本可以在各个平台上进行数据的读取(如stm32\arduino\C#\Matlab\树莓\Unity3d\python\ROS\英飞凌\Nvidia jetson linux 等) 1、树莓派和ky9250的接…

[报错解决]Type com.baomidou.mybatisplus.extension.ddl.IDdl not present

springboot整合mybatis-plus关键报错信息 在处理mybatis-plus时遇到的问题,现提供解决方案供参考: org.springframework.beans.factory.BeanCreationException: Error creating bean with name com.baomidou.mybatisplus.autoconfigure.MybatisPlusAu…

C++_第五周做题总结_类与对象

id:27 A.对象数组(类和对象) 题目描述 课堂上我们谈到类这个概念,比如第一题我们有学生类这个抽象的概念,成千上万个学生都具有同样的属性,但针对某个具体学生来说,他/她具有自己的鲜明个性,比…

AcWing刷题-区间合并

校门外的树 区间合并: from typing import List def merge(intervals: List[List[int]]) -> List[List[int]]:# 按照第一个元素从小到大进行排序intervals.sort(keylambda x: x[0])# 初始化一个新的数组new_list list()for i in intervals:# 把第一个数组元素添…

基于ssm旅游资源网站(java项目+文档+源码)

风定落花生,歌声逐流水,大家好我是风歌,混迹在java圈的辛苦码农。今天要和大家聊的是一款基于ssm的旅游资源网站。项目源码以及部署相关请联系风歌,文末附上联系信息 。 项目简介: 旅游资源网站的主要使用者分为管理…

描述C语言中的进程和线程之间的区别

描述C语言中的进程和线程之间的区别 在C语言中,进程和线程是两个非常重要的概念,它们在操作系统中各自扮演着独特的角色。理解它们之间的区别对于编写高效、可维护的并发程序至关重要。下面将详细阐述进程和线程在C语言中的区别。 首先,我们…

机器学习每周挑战——旅游景点数据分析

数据的截图,数据的说明: # 字段 数据类型 # 城市 string # 名称 string # 星级 string # 评分 float # 价格 float # 销量 int # 省/市/区 string # 坐标 string # 简介 string # 是否免费 bool # 具体地址 string拿到数据…

【42 可视化大屏 | 某瓣电影Top250数据分析可视化大屏】

文章目录 🏳️‍🌈 1 普版大屏🏳️‍🌈2 Flask版大屏🏳️‍🌈3 FlaskMysql版大屏🏳️‍🌈 4. 可视化项目源码数据 大家好,我是 👉【Python当打之年(点击跳转)…

渐变色x轴换行柱状图

// 系统上云率const optionBar {title: {text: 系统上云率,left: left,textStyle: {color: "#fff",fontSize: 14,fontWeight: 650,align: "center",},},color: [#32C5FF, #00F766, #EECB5F],grid: {top: 40,bottom: 0,},legend: { // 控制图例组件show: …

数据结构·二叉树(2)

目录 1 堆的概念 2 堆的实现 2.1 堆的初始化和销毁 2.2 获取堆顶数据和堆的判空 2.3 堆的向上调整算法 2.4 堆的向下调整算法 2.4 堆的插入 2.5 删除堆顶数据 2.6 建堆 3 建堆的时间复杂度 3.1 向上建堆的时间复杂度 3.2向下建堆的时间复杂度 4 堆的排序 前言&…

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索—解题全流程(论文更新)

【第十二届“泰迪杯”数据挖掘挑战赛】【2024泰迪杯】B题基于多模态特征融合的图像文本检索更新(论文更新) ​ 本节主要更新了论文、训练日志的log数据提取(Loss、ACC、RK)等数据可视化作图的代码 B题交流QQ群: 4583…

《乱弹篇(26)更好的自己》

俄乌、以巴、中东,烽火连天,持久酣战,搅得地球村住民不得安宁。虽说孰是孰非自有公论,但时评文难写也是评论界的普遍认知,所以今天笔者自觉地绕开时政话题,尽本“人民体验官”义务,推广人民日报…

【BY组态】轻量化web组态编辑器插件

演示地址:http://www.byzt.nethttp://www.byzt.net BY组态是一款非常优秀的纯前端的轻量化【web组态插件工具】,大小只有2M,可无缝嵌入到vue项目,react项目等,由于是原生js开发,对于前端的集成没有框架的限…

计算机网络-TCP/IP 网络模型

TCP/IP网络模型各层的详细描述: 应用层:应用层为应用程序提供数据传输的服务,负责各种不同应用之间的协议。主要协议包括: HTTP:超文本传输协议,用于从web服务器传输超文本到本地浏览器的传送协议。FTP&…

通信专业毕业设计(论文)-基于城区网络移动通信无线网络优化的研究

下载请点击↓: 通信专业毕业设计(论文)-基于城区网络移动通信无线网络优化的研究资源-CSDN文库 基于城区网络移动通信无线网络优化的研究 学生姓名 专业班级 学 号 摘要 所谓网络优化。指的是采集和分析运行中的移动网络信息,并对 找出影响…

MySQL正则表达式的详细介绍

MySQL 正则表达式是一种强大的工具,用于在文本中搜索和操作符合特定模式的字符串。它允许你使用各种字符和特殊元字符来定义复杂的模式,以便在数据库中查找、匹配、替换或操作文本数据。下面是 MySQL 正则表达式的详细介绍: 1. 基本语法&am…