PostgreSQL:删除用户 postgres 的密码要求

Mar*_*tus 61 postgresql linux postgresql-9.1

我知道,在安装时,PostgreSQL 的 db root 用户 (postgres) 没有密码:

postgres=# select usename, passwd is null from pg_shadow;
 usename  | ?column? 
----------+----------
 postgres | t
(1 row)
Run Code Online (Sandbox Code Playgroud)

...建议将其设置为:

alter role postgres password '<<very-secret>>';
Run Code Online (Sandbox Code Playgroud)

(然后相应地更新pg_hba.conf文件)

我的问题是:当 user 不需要密码时,使用什么 SQL 来恢复到以前的情况postgres

一般来说,我如何删除任何角色的密码要求?我不是在问如何更改密码,而是在问如何删除密码要求(passwd表中的空列pg_shadow)。

Cra*_*ger 81

是否需要密码pg_shadow与是否为用户实际定义密码无关。是的,我知道,这很奇怪。

pg_hba.conf控制身份验证方法。如果要请求密码,请使用md5身份验证。如果您想允许任何人无需密码登录,请使用trust. 如果您想在操作系统中要求与 PostgreSQL 中相同的用户名,请使用peer(UNIX, only for local connections) 或sspi(Windows)。

如果设置了密码,但pg_hba.conf没有告诉 PostgreSQL 要求它,则忽略密码。

如果pg_hba.conf告诉 PostgreSQL 要求输入密码但没有设置,那么无论提供什么密码,所有登录尝试都将失败。


小智 19

postgres 用户默认没有密码。删除用户密码(在本例中为 postgres 用户/角色):

alter role postgres password null;
Run Code Online (Sandbox Code Playgroud)

我们还需要将身份验证设置为trustin pg_hba.conf- view details

  • 如果由于错误“psql: fe_sendauth: no password provided”而无法访问,请编辑您的“C:\Program Files\PostgreSQL\10\data\pg_hba.conf”,然后将“md5”替换为“trust”到“IPv4 本地连接”下的“127.0.0.1/32”和“IPv6 本地连接”下的“::1/128” (5认同)
  • 这是**危险的**。请考虑在答案中包含用户可能被锁定的警告,以及可能的解决方案。 (3认同)