当前位置: 首页 > news >正文

PostgreSQL角色视图故障排除:pg_user的局限性及其在pg_roles中的解决之道

pg_user视图实际上是pg_roles视图的一个简化版本,它只包含那些可以登录的用户(即rolcanlogintrue的角色)。在现代 PostgreSQL 版本中,推荐使用功能更全面的pg_roles

列名描述
usesysid用户的 OID (Object Identifier),唯一标识符。
usename用户的名称(登录名)。
usecreatedb布尔值,是否允许创建数据库。
usesuper布尔值,是否为超级用户。
usecatcreaterole布尔值,是否允许创建其他角色。
useconfig用户的运行时配置设置(例如:SET work_mem = '10MB')。

问题
运行SELECT * FROM pg_user;时,你发现一些已创建的角色(Role)没有出现在结果中。

原因
pg_user只显示可以登录的角色(那些在创建时或修改时带有LOGIN属性的角色)。它不显示组角色 (Group roles) 或没有LOGIN属性的普通角色。

詳細を見る

Python

pandas

PyQt

解决/替代方案
总是使用pg_roles视图来查看数据库中的所有角色,包括组角色和没有登录权限的角色。

-- 查看所有角色,包括登录用户和组角色 SELECT rolname, -- 角色名称 rolcanlogin, -- 是否可以登录 rolsuper -- 是否是超级用户 FROM pg_roles ORDER BY rolname;

问题 尝试从 pg_user 或 pg_roles 中查看用户的加密密码时,发现密码列(以前是 passwd,现在是 rolpassword)显示为 或 NULL。

原因
出于安全考虑,只有超级用户 (Superuser) 才能查看其他用户的加密密码哈希值。普通用户或非超级用户角色对该列的访问受到限制。

解决/排除故障
如果你需要验证某个用户是否存在或其属性,请使用rolname和其他非敏感列。如果你确实需要管理密码(例如重置),必须使用具有SUPERUSER权限的角色进行操作。

-- 以超级用户身份为用户 'new_user' 设置新密码 ALTER USER new_user WITH PASSWORD 'strong_new_password'; -- (注意:在查询 pg_roles 时,普通用户只会看到自己的密码哈希值,而其他用户的则不可见)

问题
useconfig列显示为数组格式,其中包含用户的特殊运行时配置设置,但难以直接解析和管理。

原因
useconfig存储了用户特定的配置覆盖,例如work_memsearch_path

解决/替代方案
要以更结构化的方式查看或修改这些设置,可以使用ALTER ROLE ... SET ...命令,并可以查询pg_settings视图来检查当前生效的配置。

-- 为特定用户设置一个运行时参数 ALTER ROLE report_user SET work_mem = '64MB'; -- 检查当前会话的生效设置(这反映了用户的配置) SHOW work_mem; -- 查看 pg_roles 中的配置(超级用户可见) SELECT rolname, rolconfig FROM pg_roles WHERE rolname = 'report_user';
视图/命令作用推荐使用情况
pg_roles包含所有角色(用户和组)的完整信息。强烈推荐,用于管理和审计所有角色。
pg_user仅包含可登录的用户信息。已弃用/不推荐,除非是为了兼容旧系统。
ALTER USER/ROLE用于修改用户或角色的属性、权限和密码。进行任何角色管理操作时。

使用pg_roles视图可以更全面地管理您的数据库角色,避免了pg_user视图的局限性。

http://www.jsqmd.com/news/523824/

相关文章:

  • ndnSIM开发环境优化(二)——VScode跨文件Intellisense配置实战
  • 使用java 命令运行包含main方法的class文件时,报 Error: Could not find or load main class Test
  • SenseVoice-small轻量优势:模型加载时间<3秒,冷启动响应极快
  • AI专著生成工具大比拼,谁能在快速写作与专业质量上拔得头筹?
  • 交稿前一晚!8个降AIGC软件全场景通用测评与推荐
  • 130图书推荐系统的设计与实现-springboot+vue
  • 2000-2024年上市公司与金融监管机构的距离
  • 滤芯B2B推广选择:1688与制药网垂直行业平台深度解析 - 品牌推荐大师1
  • 基于机器学习的工业软测量技术及应用
  • FictionDown技术解析:高效小说下载解决方案的架构与实践
  • 机械臂玩起来是真上头,尤其是用MATLAB搞仿真的时候。今天咱们不扯虚的,直接上手撸代码,从正逆解到轨迹规划全流程走一遍。先来个六自由度机械臂模型热热身
  • openGauss极简版部署实战:从依赖冲突到服务启动的完整排错指南
  • VS2019+QT5.12.10+PCL1.11.1环境配置避坑指南:从安装到第一个点云窗口显示
  • 第二,三章(虚拟环境创建)文本表示
  • CosyVoice-300M Lite + Flask:构建自定义语音API服务教程
  • 建立人肉区块链:用群体记忆防历史篡改
  • 10 激励团队:团建不是吃饭喝酒,是打胜仗
  • 联邦学习:打破工业数据孤岛的协作建模新范式
  • 基于matlab的水果图像识别 针对多种常见水果混合的图像,利用Matlab软件,对水果的识别...
  • Java内部类全解析:从入门到精通,拿捏所有细节!❶
  • BUUCTF实战:从海量流量中快速定位攻击源的三步法
  • 【STM32】4x4矩阵键盘:从硬件连接到软件扫描的实战解析
  • Gemini 3技术拆解:原生多模态与1M上下文背后的架构创新
  • PLC如何通过条件触发采集记录数据
  • 幻境·流金镜像快速上手指南:Windows WSL2环境下Docker部署全流程
  • 神经酸、亚精胺、羟基酪醇原料供应商大全:2026年权威推荐榜单 - 深度智识库
  • SCI论文投稿全流程解析:从注册到成功提交
  • 当AI写作成为新常态,高校如何构建“可解释、可对话、可教育”的AIGC检测机制?
  • 131付费选座自习室小程序-springboot+vue+微信小程序
  • COMSOL热流固耦合实战:椭圆气泡空化模型独家解析