web-dev-qa-db-fra.com

J'ai oublié le mot de passe que j'ai entré lors de l'installation de postgres

J'ai oublié ou mal saisi (lors de l'installation) le mot de passe de l'utilisateur par défaut de Postgres. Je ne peux pas sembler pouvoir 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 chez 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.

150
hilarl
  1. recherchez le fichier pg_hba.conf - il peut être localisé, par exemple dans /etc/postgresql-9.1/pg_hba.conf.

    cd /etc/postgresql-9.1/

  2. Sauvegarder le

    cp pg_hba.conf pg_hba.conf-backup

  3. placez la ligne suivante (soit la première ligne non commentée, soit la seule):

    local all all trust

  4. redémarrez votre serveur PostgreSQL (par exemple, sur Linux :)

    Sudo /etc/init.d/postgresql restart

    Si le service (démon) ne commence pas à générer des rapports dans le fichier journal:

    les connexions locales ne sont pas supportées par cette construction

    tu devrais changer

    local all all trust

    à

    Host all all 127.0.0.1/32 trust

  5. vous pouvez maintenant vous connecter comme n'importe quel utilisateur. Connectez-vous en tant que superutilisateur postgres (remarque, 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é à l'hôte local)

  6. Réinitialiser le mot de passe 

    ALTER USER my_user_name with password 'my_secure_password';

  7. Restaurez l'ancien pg_hba.conf car il est très dangereux de le conserver

    cp pg_hba.conf-backup pg_hba.conf

  8. redémarrez le serveur, afin de fonctionner avec le pg_hba.conf sûr

    Sudo /etc/init.d/postgresql restart

_ {Autres lectures à propos de ce fichier pg_hba: http://www.postgresql.org/docs/9.1/static/auth-pg-hba-conf.html

301
Arsen7

Lors de la connexion à postgres à partir de 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 infructueuse avec une authentification PEER et une connexion réussie à l’aide d’une connexion TCP.

# Sudo -u postgres psql
could not change directory to "/root"
psql (9.1.11)
Type "help" for help.

postgres=# \password
Enter new password:
Enter it again:
postgres=# \q

Échouer:

# psql -U postgres -W
Password for user postgres:
psql: FATAL:  Peer authentication failed for user "postgres"

Travailler avec -h localhost:

# psql -U postgres -W  -h localhost
Password for user postgres:
psql (9.1.11)
SSL connection (cipher: DHE-RSA-AES256-SHA, bits: 256)
Type "help" for help.

postgres=#
74
SaeX

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 la METHOD de md5 à trust

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust

Puis, en utilisant pgAdmin III, je me suis connecté sans mot de passe et j'ai changé le mot de passe de l'utilisateur postgres' en allant à File -> Change Password

54
SaiyanGirl

Juste 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 avec psql.

6
Daniel

J'avais juste ce problème sous Windows 10 et le problème dans mon cas était que je courais juste psql et qu'il essayait par défaut d'essayer de me connecter avec mon nom d'utilisateur Windows ("Nathan"), mais il n'y avait pas de PostgreSQL. utilisateur avec ce nom, et ça ne me disait pas ça.

La solution consistait donc à exécuter psql -U postgres plutôt que simplement psql, puis le mot de passe que j'ai entré lors de l'installation a fonctionné.

4
Nathan Wailes

Si vous êtes dans Windows, vous pouvez simplement exécuter

Net User postgres postgres

et se connecter à postgres avec postgres/postgres comme utilisateur/mot de passe

1
ivofernandes

Pour l'installation de Windows, un utilisateur Windows est créé. Et "psql" utilise cet utilisateur pour se connecter au port. Si vous modifiez le mot de passe de l'utilisateur PostgreSQL, il ne changera pas celui de Windows . La ligne de commande ci-dessous ne fonctionne que si vous avez accès à la ligne de commande.

À la place, vous pouvez utiliser l’application graphique Windows "c:\Windows\system32\lusrmgr.exe". Cette application gère les utilisateurs créés par Windows. Donc, vous pouvez maintenant modifier le mot de passe.

1
cpunky
  1. Editez le fichier /etc/postgresql/<version>/main/pg_hba.conf et trouvez la ligne suivante:

    local   all             postgres                                md5
    
  2. Editez la ligne et changez md5 à la fin en trust et sauvegardez le fichier

  3. Recharger le postgresql service 

    $ Sudo service postgresql reload
    
  4. Cela chargera les fichiers de configuration. Vous pouvez maintenant modifier l’utilisateur postgres en vous connectant au shell psql

    $ psql -U postgres
    
  5. Mettre à jour le mot de passe de l'utilisateur postgres

    alter user postgres with password 'secure-passwd-here';
    
  6. Editez le fichier /etc/postgresql/<version>/main/pg_hba.conf et remplacez trust par md5 et enregistrez le fichier.

  7. Recharger le postgresql service 

    $ Sudo service postgresql reload
    
  8. Vérifiez que le changement de mot de passe fonctionne

    $ psql -U postgres -W
    
1
Ray Hunter

Ce que j'ai fait pour résoudre le même problème était:

Ouvrez le fichier pg_hba.conf avec l’éditeur gedit à partir du terminal:

Sudo gedit /etc/postgresql/9.5/main/pg_hba.conf

Il vous demandera un mot de passe. Entrez votre mot de passe de connexion administrateur . Cela ouvrira gedit avec le fichier. Collez la ligne suivante:

Host  all   all  127.0.0.1/32  trust

juste en dessous -

# Database administrative login by Unix domain socket

Enregistrez-le et fermez-le . Fermez le terminal, ouvrez-le à nouveau et exécutez la commande suivante:

psql -U postgres

Vous allez maintenant entrer dans la console psql . Maintenant, changez le mot de passe en entrant ceci: 

ALTER USER [your prefered user name] with password '[desired password]';

S'il indique que l'utilisateur n'existe pas, utilisez plutôt ALTER au lieu de CREATE.

Enfin, supprimez cette ligne que vous avez collée dans pg_hba et sauvegardez-la. 

1
Inconnu

Le fichier .pgpass du répertoire de base 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 qu'aucun mot de passe n'a été spécifié sinon). 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 à tout. 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 localhost correspond aux connexions TCP (nom d'hôte localhost) et de socket de domaine Unix (pghost vide ou répertoire de socket par défaut) provenant de la machine locale. Sur un serveur de secours, un nom de base de données de réplication correspond aux connexions de réplication en continu établies sur le serveur maître. Le champ de la 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 à world ou group; Pour ce faire, utilisez la commande chmod 0600 ~/.pgpass. Si les autorisations sont moins strictes que cela, le fichier sera ignoré. Sous Microsoft Windows, le fichier est supposé être stocké dans un répertoire sécurisé. Aucune vérification des autorisations spéciales n'est donc effectuée. 

0
rahulnikhare

Ajout de la réponse pour l'utilisateur Windows pour la dernière version de postgres (> 10),

Accédez à l'emplacement d'installation de 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, 

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
Host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
Host    all             all             ::1/128                 md5
#..

Changez la méthode de md5 en confiance,

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# IPv4 local connections: 
Host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust
# ...

Allez maintenant dans votre SQL Shell (PSQL) et laissez tout ce qui est vide,

Server [localhost]:
Database [postgres]:
Port [8000]:
Username [postgres]: 

Il ne vous demandera pas de mot de passe cette fois-ci et vous serez connecté,

Maintenant, lancez cette ligne, ALTER USER yourusername WITH SUPERUSER

Vous pouvez maintenant quitter le shell avec\q

Encore une fois, allez dans le fichier pg_hba.conf et remplacez METHOD de confiance par md5, puis enregistrez-le.

Maintenant, connectez-vous avec votre nouvel utilisateur et votre nouveau mot de passe et vous pourrez vérifier ses attributs.

0
Bidhan Majhi