You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PostgreSQL如何创建需首次登录改密的用户及语法报错解决

PostgreSQL创建首次登录强制修改密码用户的解决方案

报错原因

CREATE USER语句的VALID UNTIL子句要求后续跟时间戳字面量,或者用括号包裹动态时间表达式,你直接写current_date未加括号,因此触发语法报错。

两种实现方案

方案1:创建用户时直接设置密码过期(推荐)

这是兼容性最好、最稳妥的实现方式,用户密码直接标记为过期,首次登录就会触发强制改密逻辑,不受登录时间限制:

CREATE USER myUser WITH PASSWORD 'mypass' PASSWORD EXPIRE;

如果你一定要用VALID UNTIL的写法,给current_date加括号即可修复语法错误:

CREATE USER myUser WITH PASSWORD 'mypass' VALID UNTIL (current_date);

注意:该写法的有效期仅到当天,用户如果当天未登录,次日账号会直接失效,不推荐生产环境使用。

方案2:对已创建的用户强制设置密码过期

如果用户已经创建完成,可以通过ALTER语句直接标记密码过期:

ALTER USER myUser PASSWORD EXPIRE;

状态验证

你可以执行以下SQL查看用户的密码过期状态:

SELECT usename, valuntil FROM pg_shadow WHERE usename = 'myUser';

配置完成后,用户使用初始密码登录时,PostgreSQL会自动弹出修改密码提示,设置新密码后即可正常使用数据库。

内容的提问来源于stack exchange,提问作者Dilitand

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 17:15:03