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