Postgres数据库用户密码有效期设置

在Postgres数据库中,用户密码的有效期可通过pg_user或pg_shadow表的valuntil列来设置。默认情况下,如果该列值为infinity或空值,表示密码永不过期。可以使用SQL命令如'alter user'来修改用户密码的过期时间和设置为永不过期。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

pg_user或pg_shadow中:
     列valuntil值为infinity或空值表示用户密码永不过期;默认为空
 
修改用户密码过期时间:
alter user user_name with valid until '2018-01-01 08:00:00';

修改用户密码永不过期:
alter user user_name with valid until 'infinity';


highgo=# select * from pg_user;

 usename | usesysid | usecreatedb | usesuper | usecatupd | userepl |  passwd  | valuntil | useconfig 
---------+----------+-------------+----------+-----------+---------+----------+----------+-----------
 highgo  |       10 | t           | t        | t         | t       | ******** |          | 
 a       |    49231 |
### 解决 PostgreSQL 数据库用户密码过期的问题 当 PostgreSQL 数据库用户密码过期时,可以通过以下方法解决: #### 修改用户密码 通过 SQL 命令可以重新设置用户密码。例如,将用户 `postgres` 的密码重置为 `new_password`: ```sql ALTER USER postgres WITH PASSWORD 'new_password'; ``` 此命令会返回 `ALTER ROLE`,表示密码已成功修改[^1]。 #### 更改认证方式以无密码登录 如果当前无法登录数据库,可以通过编辑配置文件 `pg_hba.conf` 来更改认证方式。将相关行的认证方式从 `scram-sha-256` 或 `md5` 修改为 `trust`: ``` local all postgres trust ``` 保存文件后,重启 PostgreSQL 服务以使更改生效: ```bash pg_ctl restart -D "C:\Program Files\PostgreSQL\13\data" ``` 此时,可以无需密码直接登录数据库并执行密码修改操作[^1]。 #### 批量修改用户密码 若需要批量重置多个用户密码,可以生成批量修改语句。例如: ```sql SELECT 'ALTER USER ' || usename || ' WITH PASSWORD ''' || substr(md5(random()::text), 0, 10) || ''';' FROM pg_user WHERE usename NOT LIKE 'pg_%'; ``` 执行生成的语句即可完成批量密码重置[^1]。 #### 设置密码有效期 为了防止密码长期不变,可以为用户设置密码有效期。例如,将用户 `test10` 的密码设置为在当前时间基础上增加 180 天后过期: ```sql ALTER USER test10 WITH PASSWORD '1qaz@WSX345' VALID UNTIL (now() + INTERVAL '180 days'); ``` 此命令确保密码在指定日期后失效,必须重新设置[^2]。 #### 测试新密码 切换到 PostgreSQL 安装路径下的 `bin` 文件夹,使用以下命令测试新密码是否生效: ```bash psql -U postgres -h localhost ``` 如果成功进入交互式界面(显示 `postgres=#`),则表示密码修改成功[^3]。 #### 恢复默认认证方式 完成密码修改后,应将 `pg_hba.conf` 文件中的认证方式改回 `scram-sha-256` 或 `md5`,以确保系统的安全性。例如: ``` local all postgres scram-sha-256 ``` 再次重启 PostgreSQL 服务以应用更改[^1]。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值