web-dev-qa-db-fra.com

supprimer l'exigence de mot de passe pour les postgres utilisateur

Je comprends que, lors de l'installation, PostgreSQL n'a pas de mot de passe pour son utilisateur root db (postgres):

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

... et il est conseillé de le régler avec:

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

(puis mettez à jour le pg_hba.conf fichier en conséquence)

Ma question est: quel est le SQL à utiliser pour revenir à la situation précédente où aucun mot de passe n'était nécessaire pour l'utilisateur postgres.

En général, comment puis-je supprimer l'exigence de mot de passe pour n'importe quel rôle? Je ne demande pas comment changer le mot de passe mais comment supprimer l'exigence de mot de passe (colonne null passwd dans le tableau pg_shadow).

50

Qu'un mot de passe soit requis ou non n'a rien à voir avec pg_shadow et si un mot de passe est réellement défini pour l'utilisateur. Oui, je sais, c'est bizarre.

pg_hba.conf contrôle la méthode d'authentification. Si vous souhaitez demander un mot de passe, utilisez md5 authentification. Si vous souhaitez autoriser la connexion sans mot de passe à quiconque, utilisez trust. Si vous souhaitez exiger le même nom d'utilisateur dans le système d'exploitation que dans PostgreSQL, utilisez peer (UNIX, uniquement pour les connexions locales) ou sspi (Windows).

S'il y a un mot de passe défini, mais pg_hba.conf ne dit pas à PostgreSQL de le demander, le mot de passe est ignoré.

Si pg_hba.conf indique à PostgreSQL de demander un mot de passe mais aucun n'est défini, toutes les tentatives de connexion échoueront quel que soit le mot de passe fourni.

63
Craig Ringer

L'utilisateur postgres par défaut n'a pas de mot de passe. Pour supprimer un mot de passe utilisateur (dans ce cas pour l'utilisateur/rôle postgres):

alter role postgres password null;

Nous devons également définir l'authentification sur trust dans pg_hba.conf - voir les détails

15
lalligood

Cela a fonctionné pour moi:

alter role postgres password '';

1
thouliha