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 ?

10voto

ruruskyi Points 365

La configuration que j'ai sur mon serveur a été beaucoup personnalisée et je n'ai réussi à changer le mot de passe qu'après avoir configuré confiance l'authentification :

local   all   all   trust

N'oubliez pas de le changer en mot de passe ou en md5.

1 votes

Vous devez également redémarrer votre service postgres pour que les changements prennent effet sudo systemctl restart postgresql.service

0 votes

Où doit aller ce fichier pg_hba.conf ?

9voto

haxpor Points 185

Dans mon cas, sur Ubuntu 14.04 installé avec postgres 10.3. Je dois suivre les étapes suivantes

  • su - postgres pour basculer l'utilisateur vers postgres

  • psql pour entrer dans le shell postgres

  • \password puis entrez votre mot de passe

  • \q pour quitter la session du shell

  • Puis vous revenez à Root en exécutant exit et configurer votre pg_hba.conf (le mien est à /etc/postgresql/10/main/pg_hba.conf ) en s'assurant que vous avez la ligne suivante

    local all postgres md5

  • Redémarrez votre service postgres en service postgresql restart

  • Passez maintenant à postgres et entrez à nouveau dans le shell postgres. Le mot de passe vous sera demandé.

0 votes

Je ne pense pas que vous ayez vraiment besoin de redémarrer le service postgresql après avoir changé le mot de passe. J'ai réussi à réinitialiser le mot de passe en le redémarrant. \password est le moyen le plus rapide. Sinon, vous devez utiliser la commande ALTER USER.

7voto

Chris Dare Points 58

Utilisez ça :

\password

saisissez le nouveau mot de passe que vous souhaitez 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 et ensuite utiliser ceci :

ALTER USER 'the username' WITH PASSWORD 'the new password';

6voto

FlyingV Points 435

TLDR :

Sur de nombreux systèmes, le compte d'un utilisateur contient souvent un point, ou une sorte de ponctuation (utilisateur : john.smith, horise.johnson). Dans ces cas, une modification devra être apportée à la réponse acceptée ci-dessus. Cette modification exige que le nom d'utilisateur soit doublement cité.

Example:

ALTER USER "username.lastname" WITH PASSWORD 'password'; 

Rationnel :

Postgres est assez pointilleux quant à l'utilisation des guillemets doubles et des guillemets simples. En général, lorsque vous fournissez une chaîne de caractères, vous utilisez un guillemet simple.

4voto

John K Points 64

La syntaxe est similaire à celle des autres réponses, mais il faut savoir que vous pouvez également transmettre un md5 du mot de passe afin de ne pas transmettre un mot de passe en texte clair.

Voici quelques scénarios de conséquences involontaires de la modification du mot de passe d'un utilisateur en texte clair.

  1. Si vous ne disposez pas de SSL et que vous modifiez à distance, vous transmettez le mot de passe en clair sur le réseau.
  2. Si votre configuration de journalisation est configurée pour enregistrer les déclarations DDL. log_statement = ddl ou plus, votre mot de passe en texte clair apparaîtra dans vos journaux d'erreurs.
    1. Si vous ne protégez pas ces journaux, c'est un problème.
    2. Si vous collectez ces journaux/ETL et les affichez dans un endroit où d'autres personnes ont accès, elles pourraient finir par voir ce mot de passe, etc.
    3. Si vous autorisez un utilisateur à gérer son mot de passe, il révèle sans le savoir un mot de passe à un administrateur ou à un employé de bas niveau chargé d'examiner les journaux.

Ceci étant dit, voici comment nous pouvons modifier le mot de passe d'un utilisateur en construisant un md5 du mot de passe.

  • Postgres, lorsqu'il hachera un mot de passe en tant que md5, salera le mot de passe avec le nom de l'utilisateur puis ajoutera le texte "md5" au hachage résultant.

  • ex : "md5"+md5(password + username)

  • Dans 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
  • Donc finalement notre ALTER USER ressemblera à

    ALTER USER UserName WITH PASSWORD 'md5d6a35858d61d85e4a82ab1fb044aba9d';
  • Liens pertinents (Note : je ne mettrai des liens que vers les dernières versions de la docs pour les plus anciennes ; il y a des changements mais md5 est toujours supporté depuis longtemps).

  • créer un rôle

  • Le mot de passe est toujours stocké de manière cryptée dans les catalogues du système. Le mot clé ENCRYPTED n'a aucun effet, mais il est accepté pour des raisons de compatibilité ascendante. La méthode de cryptage est déterminée par le paramètre de configuration password_encryption. Si la chaîne de mots de passe présentée est déjà au format chiffré MD5 ou SCRAM, elle est stockée telle quelle, quel que soit le paramètre password_encryption (puisque le système ne peut pas déchiffrer la chaîne de mots de passe chiffrée spécifiée, pour la chiffrer dans un format différent). Cela permet de recharger les mots de passe cryptés pendant le dump/restauration.

  • de configuration pour cryptage du mot de passe

  • doc sur l'authentification par mot de passe postgres

  • construire postgres mot de passe md5

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