web-dev-qa-db-fra.com

Comment obtenir psql pour demander un mot de passe avec le superutilisateur postgres?

J'utilise PostgreSQL 9.6.2 sur Windows 7 et lorsque je démarre psql à partir de l'invite de commandes avec:

psql -U myusername 

il demande un mot de passe très bien et se connecte. Cependant, si je le fais:

psql -U postgres

il va se connecter directement à la base de données principale avec des droits de superutilisateur sans demander de mot de passe. Si je tape:

psql -U postgres -W 

alors il va demander le mot de passe su qui est d'ailleurs celui que j'ai défini lors de l'installation en un clic.

J'ai vérifié le pg_hba.conf et il est défini sur md5 pour tous les utilisateurs, toutes les bases de données. J'ai même changé le mot de passe de la base de données avec: postgres=# ALTER USER postgres PASSWORD 'myPassword';, en vain.

La question est pourquoi quand je me connecte en tant qu'utilisateur normal, il demande un mot de passe et ne le fait pas quand je me connecte en tant que superutilisateur? Ce n'est pas un problème majeur car je peux accéder à mes bases de données dans les deux cas, mais cela ne semble pas du tout sûr. Toute solution de contournement serait très appréciée.

6
pazeltov

pourquoi lorsque je me connecte en tant qu'utilisateur normal, il demande un mot de passe et ne le fait pas lorsque je me connecte en tant que superutilisateur?

cela ne semble pas du tout sûr.

Le petit mais important détail qui vous manque est que personne sauf vous (ou votre équipe DBA) ne devrait être autorisé n'importe où près le serveur de base de données et absolument ne devrait pas avoir les postgres informations d'identification du compte. Sans cela, "se connecter en tant que postgres, avec ou sans mot de passe" ne sera tout simplement pas une option pour eux.

Rappelez-vous: en tant que DBA, vous devrez nettoyer le "gâchis" que font les autres, alors gardez toujours les meilleurs et les meilleurs outils pour vous!

3
Phill W.

Selon le commentaire de @ a_horse_with_no_name, consultez votre pgpass.conf (.pgpass sous Linux) si vous en avez un et voyez s'il y a une entrée pour l'utilisateur postgres:

Le fichier .pgpass dans le répertoire personnel d'un utilisateur ou le fichier référencé par PGPASSFILE peut contenir des mots de passe à utiliser si la connexion nécessite un mot de passe (et aucun mot de passe n'a été spécifié autrement). Sous Microsoft Windows, le fichier est nommé% APPDATA%\postgresql\pgpass.conf (où% APPDATA% fait référence au sous-répertoire Application Data du profil de l'utilisateur).