删除用户postgres的密码要求


46

我了解到,安装后,PostgreSQL的数据库root用户(postgres)没有密码:

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

...,建议您设置以下内容:

alter role postgres password '<<very-secret>>';

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

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

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

Answers:


55

是否要求pg_shadow输入密码与用户无关,以及是否确实为用户定义了密码。是的,我知道,这很奇怪。

pg_hba.conf控制身份验证方法。如果要请求密码,请使用md5身份验证。如果您想允许没有密码的任何人登录,请使用trust。如果要在操作系统中要求使用与PostgreSQL中相同的用户名,请使用peer(UNIX,仅用于本地连接)或sspi(Windows)。

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

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


12

默认情况下,postgres用户没有密码。删除用户密码(在这种情况下为postgres用户/角色):

alter role postgres password null;

我们还需要设置身份验证trustpg_hba.conf-查看详情[ https://dba.stackexchange.com/a/19657/52550]


3
现在我不能访问psql
RoberthSolís17

3
是的,现在我被要求输入密码并且无法登录...
Amalgovinus 17/12/29

1
此命令禁止我使用postgres-与@Amalgovinus相同。
南G VU

1
如果你不能因为错误的接入psql: fe_sendauth: no password supplied,然后编辑C:\Program Files\PostgreSQL\10\data\pg_hba.conf并替换md5trust旁边127.0.0.1/32IPv4 local connections,毗邻::1/128IPv6 local connections
马可Lackovic

1

这为我工作:

alter role postgres password '';


4
当我在postgres 10中执行此操作时,出现错误“注意:空字符串不是有效的密码,正在清除密码”。但是,无论如何它都会更改我的密码,并且我什么都无法登录!WTF !!
Amalgovinus

@Amalgovinus看到我对lalligood答案的评论
Marco Lackovic
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.