J'ai oublié ou mal saisi (lors de l'installation) le mot de passe de l'utilisateur par défaut de Postgres. Je n'arrive pas à l'exécuter et j'obtiens l'erreur suivante:
psql: FATAL: password authentication failed for user "hisham"
hisham-agil: hisham$ psql
Est-il possible de réinitialiser le mot de passe ou comment créer un nouvel utilisateur avec des privilèges de superutilisateur?
Je suis nouveau sur Postgres et je viens de l'installer pour la première fois. J'essaie de l'utiliser avec Rails et j'utilise Mac OS X Lion.
Réponses:
trouver le fichier
pg_hba.conf
- il peut être localisé, par exemple dans/etc/postgresql-9.1/pg_hba.conf
.cd /etc/postgresql-9.1/
Sauvegardez
cp pg_hba.conf pg_hba.conf-backup
placez la ligne suivante (soit comme la première ligne sans commentaire, soit comme la seule):
redémarrez votre serveur PostgreSQL (par exemple, sous Linux :)
sudo /etc/init.d/postgresql restart
Si le service (démon) ne démarre pas la génération de rapports dans le fichier journal:
tu devrais changer
local all all trust
à
host all all 127.0.0.1/32 trust
vous pouvez maintenant vous connecter en tant que n'importe quel utilisateur. Connectez-vous en tant que superutilisateur
postgres
(notez que le nom du superutilisateur peut être différent dans votre installation. Dans certains systèmes, il est appelépgsql
, par exemple. )psql -U postgres
ou
psql -h 127.0.0.1 -U postgres
(notez qu'avec la première commande vous ne serez pas toujours connecté avec l'hôte local)
Réinitialiser le mot de passe ('remplacez my_user_name par postgres puisque vous réinitialisez l' utilisateur postgres )
ALTER USER my_user_name with password 'my_secure_password';
Restaurez l'ancien
pg_hba.conf
car il est très dangereux de restercp pg_hba.conf-backup pg_hba.conf
redémarrez le serveur, afin de fonctionner avec le coffre-fort
pg_hba.conf
sudo /etc/init.d/postgresql restart
Pour en savoir plus sur ce fichier pg_hba: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html
la source
psql
? On me demande toujours un mot de passe, et je ne le sais pasLors de la connexion à postgres depuis la ligne de commande, n'oubliez pas d'ajouter
-h localhost
comme paramètre de ligne de commande. Sinon, postgres essaiera de se connecter en utilisant le mode d'authentification PEER.Ce qui suit montre une réinitialisation du mot de passe, une connexion échouée avec l'authentification PEER et une connexion réussie à l'aide d'une connexion TCP.
Échouer:
Travailler avec
-h localhost
:la source
Le fichier
pg_hba.conf
(C:\Program Files\PostgreSQL\9.3\data
) a changé depuis que ces réponses ont été données. Ce qui a fonctionné pour moi, dans Windows, c'est d'ouvrir le fichier et de changer leMETHOD
demd5
entrust
:Ensuite, en utilisant pgAdmin III, je me suis connecté sans mot de passe et j'ai changé le
postgres'
mot de passe utilisateur en allant surFile -> Change Password
la source
trust
vous pouvez suivre cela et modifier le mot de passe dans cmdJuste une note, sous Linux Vous pouvez simplement exécuter
sudo su - postgres
pour devenir l'utilisateur postgres et à partir de là changer ce qui est requis en utilisant psql.la source
Modifiez le fichier
/etc/postgresql/<version>/main/pg_hba.conf
et recherchez la ligne suivante:Modifiez la ligne et changez
md5
à la fin pourtrust
enregistrer le fichierRecharger le service postgresql
Cela chargera les fichiers de configuration. Vous pouvez maintenant modifier l'
postgres
utilisateur en vous connectant aupsql
shellMettre à jour le
postgres
mot de passe de l'utilisateurModifiez le fichier
/etc/postgresql/<version>/main/pg_hba.conf
,trust
revenez aumd5
fichier et enregistrez-leRecharger le service postgresql
Vérifiez que le changement de mot de passe fonctionne
la source
J'avais juste ce problème sur Windows 10 et le problème dans mon cas était que je courais
psql
et qu'il essayait par défaut de se connecter avec mon nom d'utilisateur Windows ("Nathan"), mais il n'y avait aucun utilisateur PostgreSQL avec ce nom, et ça ne me disait pas ça.La solution a donc été d'exécuter
psql -U postgres
plutôt que simplementpsql
, puis le mot de passe que j'ai entré lors de l'installation a fonctionné.la source
Ajout de la réponse pour l'utilisateur Windows pour la dernière version postgres (> 10),
Accédez à votre emplacement d'installation postgres et recherchez
pg_hba.conf
, vous le trouverez dans..\postgres\data\pg_hba.conf
Ouvrez ce fichier avec le bloc-notes, trouvez cette ligne,
Changez la méthode de md5 en confiance,
Maintenant, allez dans votre SQL Shell (PSQL) et laissez tout vide,
Il ne demandera pas de mot de passe cette fois, et vous serez connecté,
Maintenant, lancez cette ligne,
ALTER USER yourusername WITH SUPERUSER
Vous pouvez maintenant laisser le shell avec \ q
Allez à nouveau dans le fichier pg_hba.conf et changez à nouveau la MÉTHODE de confiance en md5 et enregistrez-le.
Connectez-vous maintenant avec votre nouvel utilisateur et votre nouveau mot de passe et vous pouvez vérifier \ du pour ses attributs.
la source
Pour l'installation de Windows, un utilisateur Windows est créé. Et "psql" utilise cet utilisateur pour la connexion au port. Si vous changez le mot de passe de l'utilisateur PostgreSQL, cela ne changera pas celui de Windows. La ligne de commande juste en dessous ne fonctionne que si vous avez accès à la ligne de commande.
Au lieu de cela, vous pouvez utiliser l'application Windows GUI "c: \ Windows \ system32 \ lusrmgr.exe". Cette application gère les utilisateurs créés par Windows. Vous pouvez donc maintenant modifier le mot de passe.
la source
Ce que j'ai fait pour résoudre le même problème était:
Ouvrez le fichier pg_hba.conf avec l'éditeur gedit depuis le terminal:
Il vous demandera un mot de passe. Saisissez votre mot de passe de connexion administrateur. Cela ouvrira gedit avec le fichier. Collez la ligne suivante:
juste en dessous -
Enregistrez-le et fermez-le. Fermez le terminal, ouvrez-le à nouveau et exécutez cette commande:
Vous allez maintenant entrer dans la console psql. Maintenant, changez le mot de passe en entrant ceci:
S'il indique que l'utilisateur n'existe pas, alors au lieu de l'
ALTER
utiliserCREATE
.Enfin, supprimez cette certaine ligne que vous avez collée dans pg_hba et enregistrez-la.
la source
Si vous êtes dans Windows, vous pouvez simplement exécuter
et connectez-vous dans postgres avec postgres / postgres en tant qu'utilisateur / mot de passe
la source
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).
Ce fichier doit contenir des lignes du format suivant:
nom d'hôte: port: base de données: nom d'utilisateur: mot de passe
(Vous pouvez ajouter un commentaire de rappel au fichier en copiant la ligne ci-dessus et en la précédant de #.) Chacun des quatre premiers champs peut être une valeur littérale, ou *, qui correspond à n'importe quoi. Le champ de mot de passe de la première ligne qui correspond aux paramètres de connexion actuels sera utilisé. (Par conséquent, mettez d'abord des entrées plus spécifiques lorsque vous utilisez des caractères génériques.) Si une entrée doit contenir: ou \, échappez ce caractère avec. Un nom d'hôte de localhost correspond aux connexions TCP (nom d'hôte localhost) et socket de domaine Unix (pghost vide ou répertoire de socket par défaut) provenant de la machine locale. Dans un serveur de secours, un nom de base de données de réplication correspond aux connexions de réplication en streaming établies vers le serveur maître. Le champ de base de données est d'une utilité limitée car les utilisateurs ont le même mot de passe pour toutes les bases de données du même cluster.
Sur les systèmes Unix, les autorisations sur .pgpass doivent interdire tout accès au monde ou au groupe; réalisez ceci par la commande chmod 0600 ~ / .pgpass. Si les autorisations sont moins strictes que cela, le fichier sera ignoré. Sous Microsoft Windows, il est supposé que le fichier est stocké dans un répertoire sécurisé, donc aucune vérification des autorisations spéciales n'est effectuée.
la source
Si vous exécutez postgresql sur mac os, essayez- les :
Modifiez le fichier pg_hba.conf
sudo vi /Library/PostgreSQL/9.2/data/pg_hba.conf
Changez la méthode "md5" pour tous les utilisateurs en "confiance" vers le bas du fichier
Trouver le nom du service
ls / Library / LaunchDaemons
Recherchez postgresql
Arrêtez le service postgresql
sudo launchctl stop com.edb.launchd.postgresql-9.2
Démarrer le service postgresql
sudo launchctl start com.edb.launchd.postgresql-9.2
Démarrer la session psql en tant que postgres
psql -U postgres
(ne devrait pas demander de mot de passe en raison du paramètre de «confiance»)
Réinitialiser le mot de passe dans la session psql en tapant
ALTER USER postgres avec mot de passe 'secure-new-password';
entrer
Modifiez le fichier pg_hba.conf
Revenez à «md5»
Redémarrez à nouveau les services
la source
C'est ce qui a fonctionné pour moi sur Windows:
Modifiez le fichier pg_hba.conf situé dans C: \ Program Files \ PostgreSQL \ 9.3 \ data.
# IPv4 local connections: host all all 127.0.0.1/32 trust
Modifiez la méthode d'approbation en md5 et redémarrez le service postgres sous Windows.
Après cela, vous pouvez vous connecter en utilisant l'utilisateur postgres sans mot de passe en utilisant pgadmin. Vous pouvez changer le mot de passe en utilisant Fichier-> Changer le mot de passe.
Si l'utilisateur postgres ne dispose pas de privilèges de superutilisateur, vous ne pouvez pas modifier le mot de passe. Dans ce cas, connectez-vous avec un autre utilisateur (pgsql) avec un accès superutilisateur et accordez des privilèges aux autres utilisateurs en cliquant avec le bouton droit sur les utilisateurs et en sélectionnant propriétés-> Privilèges de rôle.
la source