1363 votes

est-il possible de vérifier ou de changer l'utilisateur / le mot de passe postgresql ?

J'ai installé postgreSQL il y a quelque temps sur ma machine Ubuntu et j'ai configuré un db, mais je me demandais s'il serait possible de vérifier le mot de passe du nom d'utilisateur que j'avais créé, de le réinitialiser ou d'en créer un nouveau en ligne ?

1932voto

sola Points 2470

pour une connexion sans mot de passe

sudo -u user_name psql db_name

pour réinitialiser le mot de passe si vous avez oublié

alter user user_name with password 'new_password';

168 votes

Ceci laisse le mot de passe clair dans l'historique des commandes postgresql de l'utilisateur.

165 votes

@greg : alors supprimez-le : rm ~/.psql_history

62 votes

Hors sujet mais si quelqu'un cherche "comment changer le nom d'un utilisateur", faites-le. ALTER USER myuser RENAME TO newname; ...pour une raison quelconque, google me pointait ici quand je cherchais ça :)

851voto

Clint Bugs Points 1078

Puis tapez :

sudo -u postgres psql

Ensuite :

\password postgres

Puis de démissionner :

\q

Si cela ne fonctionne pas, reconfigurez l'authentification.

Modifier /etc/postgresql/9.1/main/pg_hba.conf (le chemin sera différent) et changer :

    local   all             all                                     peer

à :

    local   all             all                                     md5

Puis redémarrez le serveur :

sudo service postgresql restart

3 votes

Quel est le mot de passe par défaut pour postgres ? je l'ai changé accidentellement ; est-il possible de le réinitialiser ?

2 votes

(sur psql 9.2) si je tape dans \p il me donne le mot de passe ; si je tape dans \password postgres il donne le mot de passe et ensuite des avertissements \p extra argument "assword" ignored; \p extra argument "postgres" ignored

0 votes

Si vous avez effectué le changement en utilisant \password et que vous êtes sur le même hôte que le serveur postgres, essayez de spécifier que vous voulez que votre connexion passe par un inet au lieu d'unix socket, c'est-à-dire utilisez le paramètre -h : psql -h 127.0.0.1. Cela m'a évité de modifier le fichier de configuration pg_hba.

117voto

yglodt Points 532

Vous pouvez et devez faire crypter le mot de passe des utilisateurs :

ALTER USER username WITH ENCRYPTED PASSWORD 'password';

63 votes

Ce mot-clé n'a pas d'importance pour la version actuelle. De postgresql.org/docs/current/static/sql-createrole.html The password is always stored encrypted in the system catalogs. The ENCRYPTED keyword has no effect, but is accepted for backwards compatibility.

13 votes

Attention ! Le commentaire de @John29 n'est vrai qu'à partir de Postgresql 10 et plus. Pour toutes les autres versions, le drapeau ENCRYPTED est important.

0 votes

Le site Le mot de passe non crypté est mémorisé par l'utilisateur. psql histoire ou shell... Comment utiliser un mot de passe haché (ex. SHA1) ?

96voto

Viktor Nordling Points 1736

Je crois que la meilleure façon de changer le mot de passe est simplement d'utiliser :

\password

dans la console Postgres.

Par ALTER USER documentation :

Il faut être prudent lorsqu'on spécifie un mot de passe non crypté avec cette commande. cette commande. Le mot de passe sera transmis au serveur en en clair, et il peut également être enregistré dans l'historique des commandes du client ou dans le journal du serveur. ou le journal du serveur. psql contient une commande \password qui peut être utilisé pour changer le mot de passe d'un rôle sans exposer le mot de passe en clair.

Note : ALTER USER est un alias pour ALTER ROLE

16 votes

Cela peut également être utilisé pour changer les mots de passe d'autres utilisateurs : \password username

0 votes

Il ne trouve pas le \password (sous Linux)

0 votes

@Coliban, vous devez être sur le psql lorsque vous l'exécutez.

50voto

Vajira Lasantha Points 857

Pour changer le mot de passe en utilisant la ligne de commande Linux, utilisez :

sudo -u <user_name> psql -c "ALTER USER <user_name> PASSWORD '<new_password>';"

6 votes

Rappelez-vous simplement que cela enregistrera probablement le mot de passe de l'utilisateur de la base de données dans votre historique de commandes.

3 votes

Pouvez-vous utiliser des variables d'environnement ici ? Je veux automatiser cela dans un déploiement script.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X