Comment changer le mot de passe d'un utilisateur PostgreSQL?
Pour mot de passe moins login:
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';
Puis tapez:
$ Sudo -u postgres psql
Ensuite:
\password postgres
Puis quitter psql
:
\q
Si cela ne fonctionne pas, reconfigurez l'authentification.
Éditez /etc/postgresql/9.1/main/pg_hba.conf
(le chemin sera différent) et changez:
local all all peer
à:
local all all md5
Puis redémarrez le serveur:
$ Sudo service postgresql restart
Vous pouvez et devriez avoir le mot de passe de l'utilisateur chiffré:
ALTER USER username WITH ENCRYPTED PASSWORD 'password';
Je crois que le meilleur moyen de changer le mot de passe est simplement d'utiliser:
\password
dans la console Postgres.
La source:
Vous devez faire preuve de prudence lorsque vous spécifiez un mot de passe non chiffré avec cette commande. Le mot de passe sera transmis au serveur en texte clair et pourra également être consigné dans l'historique des commandes du client ou dans le journal du serveur. psql contient une commande\mot_de_passe qui peut être utilisée pour modifier le mot de passe d'un rôle sans exposer le mot de passe en clair.
de https://www.postgresql.org/docs/9.0/static/sql-alterrole.html .
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>';"
Allez dans votre configuration Postgresql et éditez pg_hba.conf
Sudo vim /etc/postgresql/9.3/main/pg_hba.conf
Puis changez cette ligne:
Database administrative login by Unix domain socket
local all postgres md5
à :
Database administrative login by Unix domain socket
local all postgres peer
puis redémarrez le service PostgreSQL via la commande Sudo puis
psql -U postgres
Vous serez maintenant entré et verrez le terminal Postgresql
puis entrez
\password
et entrez le NOUVEAU mot de passe de l'utilisateur par défaut de Postgres. Après avoir changé le mot de passe, accédez à nouveau à pg_hba.conf et rétablissez la modification en "md5".
maintenant vous serez connecté en tant que
psql -U postgres
avec votre nouveau mot de passe.
Faites-moi savoir si vous trouvez tous un problème.
Pour demander un nouveau mot de passe pour l'utilisateur postgres (sans le montrer dans la commande):
Sudo -u postgres psql -c "\password"
La configuration que j’ai sur mon serveur a été personnalisée et j’ai réussi à changer de mot de passe seulement après avoir défini l’authentification de confiance dans le pg_hba.conf
fichier :
local all all trust
N'oubliez pas de changer ceci en mot de passe ou md5
C'était le premier résultat sur google, quand je cherchais comment renommer un utilisateur, donc:
ALTER USER <username> WITH PASSWORD '<new_password>'; -- change password
ALTER USER <old_username> RENAME TO <new_username>; -- rename user
Quelques autres commandes utiles pour la gestion des utilisateurs:
CREATE USER <username> PASSWORD '<password>' IN GROUP <group>;
DROP USER <username>;
Déplacer l'utilisateur vers un autre groupe
ALTER GROUP <old_group> DROP USER <username>;
ALTER GROUP <new_group> ADD USER <username>;
Pour mon cas sur Ubuntu 14.04 installé avec Postgres 10.3. Je dois suivre les étapes suivantes
su - postgres
pour basculer l'utilisateur sur postgres
psql
pour entrer dans le postgres Shell\password
puis entrez votre mot de passe\q
pour quitter la session ShellEnsuite, vous revenez à root en exécutant exit
et configurez votre pg_hba.conf
(le mien est à /etc/postgresql/10/main/pg_hba.conf
) en vous assurant que vous avez la ligne suivante
local all postgres md5
service postgresql restart
postgres
user et entrez à nouveau dans postgres Shell. Il vous demandera avec mot de passe.Pour changer le mot de passe
Sudo -u postgres psql
ensuite
\password postgres
maintenant, entrez le nouveau mot de passe et confirmez
puis \q
pour quitter
utilisez ceci:
\password
entrez le nouveau mot de passe que vous voulez pour cet utilisateur, puis confirmez-le. Si vous ne vous souvenez pas du mot de passe et que vous voulez le changer, vous pouvez vous connecter en tant que postgres puis utiliser ceci:
ALTER USER 'the username' WITH PASSWORD 'the new password';
Identique à d'autres réponses en termes de syntaxe, mais il faut savoir que vous pouvez également transmettre un mot de passe md5 afin de ne pas transmettre de mot de passe en texte brut.
Voici quelques scénarios de conséquences inattendues de la modification du mot de passe d’un utilisateur en texte brut.
log_statement = ddl
ou une version ultérieure, votre mot de passe en texte brut apparaîtra dans vos journaux d'erreur. Cela dit, voici comment nous pouvons modifier le mot de passe d'un utilisateur en construisant un mot de passe md5.
ex: "md5" + md5 (mot de passe + nom d'utilisateur)
En bash:
~$ echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}'
md5d6a35858d61d85e4a82ab1fb044aba9d
[PSCredential] $Credential = Get-Credential
$StringBuilder = New-Object System.Text.StringBuilder
$null = $StringBuilder.Append('md5');
[System.Security.Cryptography.HashAlgorithm]::Create('md5').ComputeHash([System.Text.Encoding]::ASCII.GetBytes(((ConvertFrom-SecureStringToPlainText -SecureString $Credential.Password) + $Credential.UserName))) | ForEach-Object {
$null = $StringBuilder.Append($_.ToString("x2"))
}
$StringBuilder.ToString();
## OUTPUT
md5d6a35858d61d85e4a82ab1fb044aba9d
ALTER USER
ressemblera à ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
Le mot de passe est toujours stocké crypté dans les catalogues système. Le mot-clé ENCRYPTED n'a pas d'effet, mais est accepté pour la compatibilité ascendante. La méthode de cryptage est déterminée par le paramètre de configuration password_encryption. Si la chaîne de mot de passe présentée est déjà au format crypté MD5 ou SCRAM, elle est stockée telle quelle, quel que soit le mot de passe crypté par mot de passe (car le système ne peut pas décrypter la chaîne de mot de passe cryptée spécifiée pour la chiffrer dans un format différent). Cela permet de recharger des mots de passe chiffrés pendant le dump/restore.