PostgreSQL密码未过期?

PostgreSQL密码未过期?,postgresql,Postgresql,我已对PostgreSQL用户运行以下查询: ALTER ROLE testuser VALID UNTIL '2020/01/01'; 暂时阻止用户登录 如果我运行查询: SELECT usename, valuntil FROM pg_user; 我收到: +----------+------------------------+ | usename | valuntil | +----------+------------------------+ | t

我已对PostgreSQL用户运行以下查询:

ALTER ROLE testuser VALID UNTIL '2020/01/01';
暂时阻止用户登录

如果我运行查询:

SELECT usename, valuntil FROM pg_user;
我收到:

+----------+------------------------+ | usename | valuntil | +----------+------------------------+ | testuser | 2020-01-01 00:00:00-04 | +----------+------------------------+ +----------+------------------------+ |usename | valuntil| +----------+------------------------+ |testuser | 2020-01-01 00:00:00-04| +----------+------------------------+ 但我仍然可以登录这个用户没有任何问题。我希望,如果我尝试使用此用户登录,登录会失败,并且我会收到一个密码过期的错误(或类似的错误)

我是否理解“有效期至”语句的作用

The VALID UNTIL clause defines an expiration time for a password only, 
not for the role per se. In particular, the expiration time is 
not enforced when logging in using a non-password-based authentication method.


在文档中看到了一些东西,对我来说似乎非常直截了当(如果我错了,请纠正我),但我认为这是因为用户仍然拥有登录权限


在文档中看到了一些东西,对我来说似乎非常直截了当(如果我错了,请纠正我),但我认为这是因为用户仍然拥有登录权限


可能用户在pg_hba.conf中设置为
trust
?可能用户在pg_hba.conf中设置为
trust
?用户是使用“创建用户testuser with encrypted password”创建的;我相信这会被设置为基于密码的身份验证?就像“马…”说的那样。如果在hba文件中将它们设置为信任,则不会提示它们,因此它们是非基于密码的身份验证。在
pg_hba.conf
文件中将它们设置为“信任”。用户是使用“创建用户testuser with encrypted password”创建的;我相信这会被设置为基于密码的身份验证?就像“马…”说的那样。如果在hba文件中将它们设置为信任,则不会提示它们,因此它们是非基于密码的身份验证。在
pg_hba.conf
文件中将它们设置为“信任”。这有点不正确
LOGIN
只是说
ROLE
可以通过任何可用的auth方法连接到数据库<代码>有效期至仅涵盖密码连接方法,如md5和紧急停堆。因此,归根结底,这取决于您试图实现的目标,拒绝用户的所有连接或强制密码过期以进行密码验证。这有点不正确
LOGIN
只是说
ROLE
可以通过任何可用的auth方法连接到数据库<代码>有效期至仅涵盖密码连接方法,如md5和紧急停堆。因此,归根结底,这取决于您试图实现的目标,拒绝用户的所有连接或强制密码过期以进行密码验证。
'ALTER ROLE testuser [LOGIN|NOLOGIN]'