PostgreSQL修改用户密码的多种方式

 更新时间:2025年05月27日 11:02:35   作者:文牧之  
在使用PostgreSQL数据库时,忘记数据库密码可能会影响到正常的开发和维护工作,本文将详细给大家介绍了PostgreSQL修改用户密码的多种方式,并有相关的代码示例供大家参考,需要的朋友可以参考下

PostgreSQL 修改用户密码

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

一 基本密码修改方法

1.1 使用 ALTER USER 命令(推荐)

-- 修改当前用户密码
ALTER USER current_user WITH PASSWORD 'new_password';

-- 修改指定用户密码(需要权限)
ALTER USER username WITH PASSWORD 'new_password';

1.2 使用 psql 的 \password 命令

psql -U username -d database
\password username
# 会提示输入新密码两次

二 不同环境下的密码修改

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

-- 以postgres用户登录后
sudo -u postgres psql
ALTER USER dbuser WITH PASSWORD 'new_secure_pass123';

2.2 远程修改(通过psql连接)

psql -h 192.xxx.xxx.99 -U postgres -d postgres
# 输入当前密码后执行:
ALTER USER app_user WITH PASSWORD 'new_pass!456';

三 密码策略控制

3.1 密码有效期设置

-- 设置密码有效期
ALTER USER username VALID UNTIL '2025-12-31';

-- 使密码永不过期
ALTER USER username VALID UNTIL 'infinity';

3.2 密码复杂度要求(需安装扩展)

CREATE EXTENSION pgcrypto;
ALTER USER username WITH ENCRYPTED PASSWORD 'Complex@Pass123';

四 特殊场景处理

4.1 忘记postgres用户密码

解决方法

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

4.2 批量修改用户密码

-- 生成批量修改语句
SELECT 'ALTER USER '||usename||' WITH PASSWORD '''||
       substr(md5(random()::text), 0, 10)||''';'
FROM pg_user
WHERE usename NOT LIKE 'pg_%';

五 安全最佳实践

  1. 密码复杂度

    • 至少12个字符
    • 包含大小写字母、数字和特殊字符
    • 避免使用字典单词
  2. 密码存储

    • PostgreSQL默认使用scram-sha-256加密
    • 确保pg_hba.conf使用安全认证方法
  3. 定期轮换

-- 检查密码最后修改时间(需pg_shadow权限)
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):

password_encryption = scram-sha-256

七 故障排除

常见错误及解决

  • 权限不足

ERROR: must be superuser to alter superusers
  • 解决方案:使用postgres用户或具有CREATEROLE权限的用户执行

  • 密码包含特殊字符

-- 密码包含单引号时
ALTER USER test WITH PASSWORD $$don't_use_this$$;
  • 连接问题

    • 修改密码后记得更新应用连接配置
    • 检查pg_hba.conf的认证方法是否匹配

到此这篇关于PostgreSQL修改用户密码的多种方式的文章就介绍到这了,更多相关PostgreSQL修改密码内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PostgreSQL psql 常用命令总结

    PostgreSQL psql 常用命令总结

    psql是PostgreSQL的一个命令行交互式客户端工具,它具有非常丰富的功能,类似于Oracle的命令行工具sqlplus,本文给大家总结下PostgreSQL 中常用 psql 常用命令以便后续查阅,感兴趣的朋友跟随小编一起看看吧
    2023-07-07
  • PostgreSQL中调用存储过程并返回数据集实例

    PostgreSQL中调用存储过程并返回数据集实例

    这篇文章主要介绍了PostgreSQL中调用存储过程并返回数据集实例,本文给出一创建数据表、插入测试数据、创建存储过程、调用创建存储过程和运行效果完整例子,需要的朋友可以参考下
    2015-01-01
  • PostgreSQL 重复数据处理的操作方法

    PostgreSQL 重复数据处理的操作方法

    这篇文章主要介绍了PostgreSQL 重复数据处理的操作方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • PostgreSQL数据库中DISTINCT关键字的四种用法详解

    PostgreSQL数据库中DISTINCT关键字的四种用法详解

    PostgreSQL 不但高度兼容 SQL 标准,同时还对很多语法进行了扩展,可以用于实现一些特殊的功能,今天我们就来介绍一下 PostgreSQL 数据库中 DISTINCT 关键字的 4 种不同用法,需要的朋友可以参考下
    2024-04-04
  • PostgreSQL 更新JSON,JSONB字段的操作

    PostgreSQL 更新JSON,JSONB字段的操作

    这篇文章主要介绍了PostgreSQL 更新JSON,JSONB字段的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • postgresql如何兼容MySQL if函数

    postgresql如何兼容MySQL if函数

    这篇文章主要介绍了postgresql如何兼容MySQL if函数问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • postgresql实现对已有数据表分区处理的操作详解

    postgresql实现对已有数据表分区处理的操作详解

    这篇文章主要为大家详细介绍了postgresql实现对已有数据表分区处理的操作的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下
    2023-12-12
  • Postgresql和mysql的区别及说明

    Postgresql和mysql的区别及说明

    这篇文章主要介绍了Postgresql和mysql的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-11-11
  • 如何在PostgreSQL中创建只读权限和读写权限的账号

    如何在PostgreSQL中创建只读权限和读写权限的账号

    一个良好的账号管理策略对于数据库的安全和数据的完整性至关重要,通过为不同的用户设置适当的权限,可以确保他们只能访问他们需要的数据,并防止对敏感数据的意外或恶意访问,本文介绍在 PostgreSQL中创建只读权限和读写权限的账号的步骤和方法,感兴趣的朋友一起看看吧
    2023-08-08
  • PostgreSQL数据库中跨库访问解决方案

    PostgreSQL数据库中跨库访问解决方案

    这篇文章主要介绍了PostgreSQL数据库中跨库访问解决方案,需要的朋友可以参考下
    2017-05-05

最新评论