PostgreSQL 修改用户密码

[复制链接]
发表于 2025-7-6 16:47:04 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
PostgreSQL 修改用户密码

PostgreSQL 提供了多种方式来修改用户密码,以下是全面的密码修改方法和注意事项:
一 根本密码修改方法

1.1 利用 ALTER USER 命令(推荐)

  1. -- 修改当前用户密码
  2. ALTER USER current_user WITH PASSWORD 'new_password';
  3. -- 修改指定用户密码(需要权限)
  4. ALTER USER username WITH PASSWORD 'new_password';
复制代码
1.2 利用 psql 的 \password 命令

  1. psql -U username -d database
  2. \password username
  3. # 会提示输入新密码两次
复制代码
二 不同情况下的密码修改

2.1 本地修改(有管理员权限)

  1. -- 以postgres用户登录后
  2. sudo -u postgres psql
  3. ALTER USER dbuser WITH PASSWORD 'new_secure_pass123';
复制代码
2.2 远程修改(通过psql连接)

  1. psql -h 192.xxx.xxx.99 -U postgres -d postgres
  2. # 输入当前密码后执行:
  3. ALTER USER app_user WITH PASSWORD 'new_pass!456';
复制代码
三 密码计谋控制

3.1 密码有效期设置

  1. -- 设置密码有效期
  2. ALTER USER username VALID UNTIL '2025-12-31';
  3. -- 使密码永不过期
  4. ALTER USER username VALID UNTIL 'infinity';
复制代码
3.2 密码复杂度要求(需安装扩展)

  1. CREATE EXTENSION pgcrypto;
  2. ALTER USER username WITH ENCRYPTED PASSWORD 'Complex@Pass123';
复制代码
四 特殊场景处置惩罚

4.1 忘记postgres用户密码

办理方法

  • 停止PostgreSQL服务
  • 编辑pg_hba.conf,将认证方法改为trust:
    1. local   all   postgres   trust
    复制代码
  • 重新加载设置
  • 无需密码登录并修改密码
  • 恢复pg_hba.conf设置
4.2 批量修改用户密码

  1. -- 生成批量修改语句
  2. SELECT 'ALTER USER '||usename||' WITH PASSWORD '''||
  3.        substr(md5(random()::text), 0, 10)||''';'
  4. FROM pg_user
  5. WHERE usename NOT LIKE 'pg_%';
复制代码
安全最佳实践


  • 密码复杂度

    • 至少12个字符
    • 包含大小写字母、数字和特殊字符
    • 避免利用字典单词

  • 密码存储

    • PostgreSQL默认利用scram-sha-256加密
    • 确保pg_hba.conf利用安全认证方法

  • 定期轮换
    1. -- 检查密码最后修改时间(需pg_shadow权限)
    2. SELECT usename, passwd FROM pg_shadow;
    复制代码
六 密码加密方式

PostgreSQL支持多种密码加密算法:
加密方式命令示例安全性scram-sha-256ALTER USER...WITH PASSWORD 'pwd'高(默认)md5ALTER USER...WITH ENCRYPTED PASSWORD 'pwd'中(兼容旧版)plaintextALTER USER...WITH UNENCRYPTED PASSWORD 'pwd'低(不推荐) 设置默认加密方式(postgresql.conf):
  1. password_encryption = scram-sha-256
复制代码
七 故障排除

常见错误及办理


  • 权限不足
    1. ERROR: must be superuser to alter superusers
    复制代码
    办理方案:利用postgres用户或具有CREATEROLE权限的用户执行
  • 密码包含特殊字符
    1. -- 密码包含单引号时
    2. ALTER USER test WITH PASSWORD $$don't_use_this$$;
    复制代码
  • 连接问题

    • 修改密码跋文得更新应用连接设置
    • 查抄pg_hba.conf的认证方法是否匹配

服膺:心存敬畏,行有所止。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表