видалити вимогу пароля для користувальницьких postgres


46

Я розумію, що після встановлення PostgreSQL не має пароля для свого кореневого користувача db (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.confне повідомляє PostgreSQL просити його, пароль ігнорується.

Якщо pg_hba.confвказує PostgreSQL запитувати пароль, але він не встановлений, то всі спроби входу не вдасться незалежно від того, який пароль буде надано.


12

Користувач postgres за замовчуванням не має пароля. Щоб видалити пароль користувача (у цьому випадку для користувача postgres / роль):

alter role postgres password null;

Ми також повинні встановити аутентифікації trustв pg_hba.conf- подробиці [ https://dba.stackexchange.com/a/19657/52550]


3
тепер я не можу отримати доступ до psql
Роберт Соліс

3
Так, зараз мене просять пароль і не можу увійти ...
Amalgovinus

1
ця команда забороняє мені від postgres - те саме, що сказав @Amalgovinus.
Нам Г ВУ

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 '';


4
Коли я роблю це в postgres 10, я отримую помилку "ПОПЕРЕДЖЕННЯ: порожня рядок не є дійсним паролем, очищаючи пароль". Але потім він все одно змінює мій пароль, і я не можу ні з чим увійти! WTF !!
Амальговінус

@Amalgovinus дивіться мій коментар до відповіді lalligood
Marco Lackovic
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.