web-dev-qa-db-fra.com

Comment changer le mot de passe de l'utilisateur PostgreSQL?

Comment changer le mot de passe d'un utilisateur PostgreSQL?

818
Saad

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';
1176
solaimuruganv

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
548
Clint Bugs

Vous pouvez et devriez avoir le mot de passe de l'utilisateur chiffré:

ALTER USER username WITH ENCRYPTED PASSWORD 'password';
70
yglodt

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 .

40
Viktor Nordling

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>';"
31
Vajira Lasantha

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.

22

Pour demander un nouveau mot de passe pour l'utilisateur postgres (sans le montrer dans la commande):

Sudo -u postgres psql -c "\password"
9
Nicolau

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

8
ruruskyi

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>;
8
Salvador Dali

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 Shell
  • Ensuite, 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

  • Redémarrez votre service postgres par service postgresql restart
  • Passez maintenant à postgres user et entrez à nouveau dans postgres Shell. Il vous demandera avec mot de passe.
5
haxpor

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

5
Akitha_MJ

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';
3
Chris Dare

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.

  1. Si vous ne disposez pas de SSL et que vous modifiez à distance, vous transmettez le mot de passe en texte brut sur le réseau.
  2. Si votre configuration de journalisation est définie pour consigner les instructions DDL log_statement = ddl ou une version ultérieure, votre mot de passe en texte brut apparaîtra dans vos journaux d'erreur.
    1. Si vous ne protégez pas ces journaux, c'est un problème.
    2. Si vous collectez ces journaux/ETL et les affichez là où d'autres personnes ont accès, ils risquent de voir ce mot de passe, etc.
    3. Si vous permettez à un utilisateur de gérer son mot de passe, il révèle inconsciemment un mot de passe à un administrateur ou à un employé de niveau inférieur chargé de consulter les journaux.

Cela dit, voici comment nous pouvons modifier le mot de passe d'un utilisateur en construisant un mot de passe md5.

  • Postgres quand hash un mot de passe en tant que md5, le mot de passe avec le nom d'utilisateur ajoute ensuite le texte "md5" au hachage résultant.
  • ex: "md5" + md5 (mot de passe + nom d'utilisateur)

  • En bash:

    ~$ echo -n "passwordStringUserName" | md5sum | awk '{print "md5"$1}'
    md5d6a35858d61d85e4a82ab1fb044aba9d
  • Dans PowerShell:
    [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
  • Alors finalement, notre commande ALTER USER ressemblera à
    ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
  • Liens pertinents (Remarque: je ne créerai un lien qu'avec les versions les plus récentes de la documentation, car certaines versions antérieures en changent, mais md5 prend toujours en charge les retours.)
  • créer un rôle
  • 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.

  • paramètre de configuration pour password_encryption
  • doc d'authentification de mot de passe postgres
  • construction du mot de passe postgres md5
0
jkdba