удалить требование пароля для пользователя postgres

47

Я понимаю, что после установки 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файл соответственно)

Мой вопрос: какой SQL использовать, чтобы вернуться к предыдущей ситуации, когда пользователю не требовался пароль postgres.

В общем, как я могу удалить требование пароля для любой роли? Я спрашиваю не о том, как изменить пароль, а о том, как удалить требование к паролю (пустой passwdстолбец в таблице pg_shadow).

Маркус Юний Брут
источник

Ответы:

55

Требуется ли пароль или нет, не имеет никакого отношения pg_shadowи фактически ли пароль определен для пользователя. Да, я знаю, это странно.

pg_hba.confконтролирует метод аутентификации. Если вы хотите запросить пароль, используйте md5аутентификацию. Если вы хотите разрешить вход без пароля никому, используйте trust. Если вы хотите указать то же имя пользователя в операционной системе, что и в PostgreSQL, используйте peer(UNIX, только для локальных подключений) или sspi(Windows).

Если пароль установлен, но pg_hba.confPostgreSQL не запрашивает его, пароль игнорируется.

Если pg_hba.confPostgreSQL сообщает, что нужно запрашивать пароль, но он не задан, то все попытки входа в систему завершатся неудачей, независимо от того, какой пароль указан.

Крейг Рингер
источник
12

Пользователь postgres по умолчанию не имеет пароля. Чтобы удалить пароль пользователя (в данном случае для пользователя / роли postgres):

alter role postgres password null;

Мы также должны установить аутентификации trustв pg_hba.conf- пОДРОБНОСТИ [ https://dba.stackexchange.com/a/19657/52550]

lalligood
источник
3
Теперь я не могу получить доступ в PSQL
Роберт Солис
3
Да, теперь меня просят
ввести
1
эта команда запрещает мне postgres - так же, как сказал @Amalgovinus.
Nam G VU
1
Если вы не можете получить доступ из - за ошибки psql: fe_sendauth: no password supplied, а затем редактировать свои C:\Program Files\PostgreSQL\10\data\pg_hba.confи заменить md5с trustрядом 127.0.0.1/32под IPv4 local connectionsи рядом ::1/128подIPv6 local connections
Marco Lackovic
1

Это сработало для меня:

alter role postgres password '';

thouliha
источник
4
Когда я делаю это в Postgres 10, я получаю ошибку «ВНИМАНИЕ: пустая строка не является действительным паролем, сброс пароля». Но тогда он все равно меняет мой пароль, и я не могу войти ни с чем! WTF !!
Амальговинус
@Amalgovinus см. Мой комментарий к lalligood ответу
Марко Лацкович