如何合理规划 PostgreSQL 的数据库用户

news2024/11/26 15:41:08

PostgreSQL 作为世界上最领先的开源数据库,有一套强大的用户角色权限系统,和 MySQL 做一个对比:

file

但硬币的另一面则是对于简单场景来说增加了复杂度。在许多单应用场景,其实也不需要额外的 schema 层,也不需要额外的 owner。相信玩过 PG 的同学都碰到过类似 must be owner of table 的问题。

file

场景说明

我们就来说说简单的 PG 使用场景,数据库用户该如何配。所谓简单是指:

  1. PG 实例就一个数据库
  2. 数据库就一个默认的 public schema
  3. 所有的表都在这个 public schema 下

而使用数据库的场景,由人到数据库,和应用到数据库两部分组成:

  1. 人到数据库

    • DBA 操作
    • 数据库变更,DDL 和 DML 都有
    • 数据库查询
  2. 应用到数据库

    • 数据库变更,DDL 的话通常在应用启动前做,除此之外都是 DML
    • 数据库查询

具体配置

最简单粗暴的当然是一个 superuser 搞定。本地安装 postgres 的话,第一个 postgres 用户其实就是这样的 superuser。

file

我们把人和应用拆开,如果应用在启动时还是需要变更 schema,则是下面这样

file

如果数据库 schema 变更发布已经和应用独立开来了,那么应用只需要有基本的数据库读写操作

file

到了这步如果除了 DBA 之外的人想访问数据库的话,直接把 DBA 用户交出去风险太大了,所以这时会选择引入像 Bytebase 这样的工具。DBA 在 Bytebase 上配置普通用户的数据库访问权限,而不用把用户名密码交出去。而且 schema 变更也可以在 Bytebase 上完成,这样大大减少了需要使用 DBA 账号直接操作数据库的情况,降低风险。

file

Pigsty 作为开箱即用的 PG 发行版,也预置了一套类似的默认角色。

file

额外注意

  • 公有云数据库服务是不提供 superuser 的,他们只提供一个阉割版的 superuser,比如 Google Cloud SQL 里的 cloudsqlsuperuser

file

  • 设置单独 migration 用户的原因一方面是为了方便监控,另一方面也使得我们可以给 migration 用户设置单独的默认连接参数,最常见设置的是 lock_timeout。要设置的原因是,做 DDL 时要加锁,加锁需要等待,而因为 PG 的队列机制,即使后面来的另外一条事务不需要 DDL 锁,一样会被 block 住。所以 migration 用户往往要设置一个 lock_timeout,避免长时间 block 后面的其他事务。

  • 在 Postgres 里创建对象时,比如建表,建出来表的 owner 就是建表语句的执行者。所以当使用一个单独的 migration 用户来做 schema 变更时,表的 owner 也会是 migration。如果希望 owner 能反应具体的业务,比如说 payment 的话,那么可以再单独创建一个 payment 的角色,在 migration 执行的时候,使用 SET LOCAL ROLE 切换到 payment 再执行。

PostgreSQL 的用户角色体系还是有点复杂的,如果有什么其他额外建议和需要注意的地方,欢迎大家留言。


💡 更多资讯,请关注 Bytebase 公号:Bytebase

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

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

相关文章

MATLAB | 情人节画个花瓣venn图?

之前七夕节情人节各种花,相册,爱心啥的都快画够了,今年画个花瓣韦恩图? 花瓣上的数字是仅属于该类的样本数,而中心的数字是属于每一类的样本数 教程部分 0 数据准备 % 给组起名t1 t2 t3...t15 setName compose(t%d,…

(五)【Jmeter】使用代理录制HTTP脚本操作步骤及注意事项

前置信息 软件版本Jmeter5.6.3 服务网址备注drupalhttp://192.168.88.88:18080/(二)【Jmeter】专栏实战项目靶场drupal部署 用户名密码test1test1test2test2 实操记录 1、启动jmeter,操作顺序见下图 2、在视图面板添加如下信息&#x…

【复现】某某ERP 信息泄露漏洞_49

目录 一.概述 二 .漏洞影响 三.漏洞复现 1. 漏洞一: 四.修复建议: 五. 搜索语法: 六.免责声明 一.概述 该ERP基于SpringBoot框架和SaaS模式,立志为中小企业提供开源好用的ERP软件,目前专注进销存财务生产功能。…

【AI视野·今日NLP 自然语言处理论文速览 第七十八期】Wed, 17 Jan 2024

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 17 Jan 2024 (showing first 100 of 163 entries) Totally 100 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers Deductive Closure Training of Language Models for Coherence, Accur…

优思学院|工业4.0:世界上首个工业机器人诞生于50年前

五十年前,德国机床制造商库卡(KUKA)推出了FAMULUS工业机器人,这不仅是现代工业机器人发展史上的一个重要里程碑,也为后来的技术革新铺平了道路。1973年,世界见证了一种拥有六轴的多关节臂动力学设计的机器人…

『运维备忘录』之 Lsof 命令详解

运维人员不仅要熟悉操作系统、服务器、网络等只是,甚至对于开发相关的也要有所了解。很多运维工作者可能一时半会记不住那么多命令、代码、方法、原理或者用法等等。这里我将结合自身工作,持续给大家更新运维工作所需要接触到的知识点,希望大…

【王道数据结构】【chapter5树与二叉树】【P158t11】

在二叉树中查找值为x的结点&#xff0c;试编写算法&#xff08;用c语言&#xff09;打印值为x的节点的所有祖先&#xff0c;假设值为x的结点不多于1个 #include <iostream> #include <stack> #include<queue> typedef struct treenode{char data;struct tree…

arkTS开发鸿蒙OS个人商城案例【2024最新 新年限定开发案例QAQ】

龙年前述 源码获取>文章下方二维码&#xff0c;回复关键字“鸿蒙OS商场源码” 前言 arkTS是华为自己研发的一套前端语言&#xff0c;是在js和ts技术的基础上又进行了升级而成&#xff01; 本篇文章会带领大家通过arkTSnode.jsmongoDB来完成一个鸿蒙OS版本的商城案例&…

bpmn-js 事件总线处理

bpmn-js中使用EventBus作为事件的处理句柄&#xff0c;EventBus的使用和我们常规使用的事件总线没啥大的区别&#xff0c;其源码位于&#xff1a;/diagram-js/lib/core/EventBus.js &#xff08;bpmn-js使用diagram-js实现流程图的web端绘制呈现工具&#xff09;。 EventBus使用…

ubuntu22.04@laptop OpenCV Get Started: 008_image_filtering_using_convolution

ubuntu22.04laptop OpenCV Get Started: 008_image_filtering_using_convolution 1. 源由2. convolution应用Demo2.1 C应用Demo2.2 Python应用Demo 3. 重点分析3.1 identity矩阵3.2 all ones 5x5矩阵3.3 blur 5x5矩阵3.4 GaussianBlur 5x5矩阵3.5 medianBlur 5x5矩阵3.6 Sharpe…

「数据结构」MapSet

&#x1f387;个人主页&#xff1a;Ice_Sugar_7 &#x1f387;所属专栏&#xff1a;Java数据结构 &#x1f387;欢迎点赞收藏加关注哦&#xff01; Map&Set &#x1f349;概念&#x1f349;模型&#x1f349;Map&#x1f34c;TreeMap和HashMap的区别&#x1f34c;Map常用方…

儿童护眼台灯哪个值得推荐?推荐专业的儿童护眼台灯

现在的孩子很多都存在视力问题&#xff0c;而且年龄也越来越早&#xff0c;不少还为上学的孩子都早已戴上小眼镜。虽说这可能存在家族近视遗传的可能性&#xff0c;不过更多的还是后天导致的。长时间玩耍电子产品、缺乏运动、不良用眼习惯、不合适的光线等等都是导致孩子近视的…

【知识图谱--第四讲知识图谱的抽取与构建】

知识图谱的抽取与构建 实体识别与分类关系抽取与属性补全概念抽取事件识别与抽取 实体识别与分类 关系抽取与属性补全 概念抽取 事件识别与抽取

面试经典150题——最小覆盖子串(困难)

"The greatest glory in living lies not in never falling, but in rising every time we fall." - Nelson Mandela​ 1. 题目描述 2. 题目分析与解析 2.1 思路一——暴力求解 还是和之前讲的一样&#xff0c;看见题目没思路&#xff0c;先试试普通情况下人的解法…

ng : 无法加载文件 C:\Program Files\nodejs\node_global\ng.ps1, 因为在此系统上禁止运行脚本

ng : 无法加载文件 C:\Program Files\nodejs\node_global\ng.ps1&#xff0c;因为在此系统上禁止运行脚本 今天在VSCode中运行ng serve --port 8081运行基于Angular的项目时&#xff0c;报错了&#xff0c;错误如下图所示&#xff1a; 解决方法&#xff1a; 按照下图的5步即…

智能汽车行业产业研究报告:4D成像毫米波雷达—自动驾驶最佳辅助

今天分享的是智能汽车系列深度研究报告&#xff1a;《智能汽车行业产业研究报告&#xff1a;4D成像毫米波雷达—自动驾驶最佳辅助》。 &#xff08;报告出品方&#xff1a;开源证券&#xff09; 报告共计&#xff1a;43页 视觉感知最佳辅助——4D 成像毫米波雷达 感知是自动…

解决‘vue‘ 不是内部或外部命令,也不是可运行的程序(设置全局变量)

发现是没有执行&#xff1a; npm install -g vue/cli 但是发现还是不行 此时&#xff0c;我们安装了 Vue CLI&#xff0c;但是在运行 vue ui 命令时出现了问题。这通常是因为全局安装的 Vue CLI 的路径没有被正确地添加到系统的环境变量中。 可以尝试以下几种方法来解决这个问…

如何把华为手机上的数据转移到荣耀手机上?

方法/步骤 点击并进入华为手机&#xff08;旧手机&#xff09;的【手机克隆】应用&#xff0c;选择【这是旧设备】&#xff1b; 点击并进入荣耀手机&#xff08;新手机&#xff09;的【换机克隆】应用&#xff0c;选择【这是新设备】&#xff1b; 荣耀手机&#xff08;新…

《VulnStack》ATTCK-1

title: 《VulnStack》ATT&CK-1 date: 2024-01-29 14:53:49 updated: 2024-02-14 18:55:49 categories: WriteUp&#xff1a;Cyber-Range excerpt: 主机发现、端口扫描&#xff0c;服务探测&#xff0c;操作系统探测、nmap 漏洞库扫描、网站首页信息泄露、msf 渗透与信息收集…

源码推荐:hello-algo @ github

github https://github.com/krahets/hello-algo 本项目旨在创建一本开源、免费、对新手友好的数据结构与算法入门教程。全书采用动画图解&#xff0c;结构化地讲解数据结构与算法知识&#xff0c;内容清晰易懂&#xff0c;学习曲线平滑。算法源代码皆可一键运行&#xff0c;支…