惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

腾讯CDC
博客园 - Franky
MyScale Blog
MyScale Blog
L
LangChain Blog
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
Stack Overflow Blog
Stack Overflow Blog
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - 司徒正美
量子位
A
About on SuperTechFans
C
Check Point Blog
大猫的无限游戏
大猫的无限游戏
Last Week in AI
Last Week in AI
小众软件
小众软件
Apple Machine Learning Research
Apple Machine Learning Research
I
InfoQ
V
Visual Studio Blog
Vercel News
Vercel News
B
Blog
爱范儿
爱范儿
aimingoo的专栏
aimingoo的专栏
U
Unit 42

博客园 - 丁少华

adb提取本机apk 安卓ADB调试安卓 高德地图车机版本9.5制作共存 Taskfile 拆分子文件 go项目的taskfile Go 内嵌网页 windows的终端像mac一样好用 vue不使用根组件 Huma + Orval 前后端 API 自动生成方案 Mac安装nginx 不喜欢Go的几点 代码写错分支拯救指南 React UI 库推荐 Loop Engineering Vue 3 UI 组件库 Neon白嫖免费pgsql 域名利用cloudflare免费图床 nginx反代CloudflarePages提示502 vite使用shadcn vite使用biome Window下Nginx winserver2022安装不上软件 mac已损坏无法打开 代码高亮 命令运行器之task 命令运行器之just windows开启wsl 白嫖Redis 白嫖MongoDB vercel无服务函数
pgsql指定用户看到某个表
丁少华 · 2026-09-05 · via 博客园 - 丁少华

你的核心诉求

  1. 单独隔离密码:不希望把包含所有核心数据的管理员连接(postgres)交给外部或测试程序,而是想单独为某些库设置一套专属密码。
  2. 通配/批量权限:希望该用户(demo)只能访问以特定前缀(如 demo_)命名的数据库,且无法触碰主库或系统库。
  3. 基于已有库克隆:新库的内容往往来自已有的生产库或模板库。
  4. 最小权限原则:不希望给 demo 过高的权限(如全局创建新数据库的特权)。

踩坑复盘(为什么 PG 感觉繁琐)

  • 通配符不支持:PostgreSQL 无法像 MySQL 一样直接一条 GRANT ... ON demo_%,权限必须按库、按表显式授权。
  • 所有权割裂问题:如果用管理员账号克隆/传输数据到新库,库里的表所有权依然属于管理员,导致 demo 连进去后报 42501 permission denied
  • 特权受限:直接给普通用户提权建库又违背了权限隔离的初衷。

最终最佳实践方案(一劳永逸版)

只要遵循 “管理员建空壳,demo 自己搬家具” 的原则,后续再做类似的库克隆,只需两分钟且不需要背任何赋权 SQL:

第一步:创建受限用户(仅需一次)
用管理员执行,创建一个只用于特定业务的普通账号:

CREATE USER demo WITH PASSWORD '你的强密码';

第二步:管理员建空库并直接指定归属
每次需要基于老库给 demo 派生新库时,管理员仅负责建一个空库,把产权直接写成 demo

CREATE DATABASE demo_blog OWNER demo;

(这样 demo 依然没有全局建库权限,安全可控。)

第三步:以 demo 的身份导入数据
在 Navicat 中使用 阿里云-demo用户 连接这个新库 demo_blog,执行数据传输或运行建表迁移脚本:

  • 因为数据是 demo 亲自导入的,库内所有表、视图、序列天然归 demo 所有。
  • 后端程序使用 demo 账号连接,查表、增删改查畅通无阻,彻底告别权限报错。