Quel est le nom d'utilisateur / mot de passe de superutilisateur par défaut pour postgres après une nouvelle installation?

Réponses:

535

ATTENTION La réponse à propos de la modification du mot de passe UNIX pour "postgres" par "$ sudo passwd postgres" n’est pas préférable, elle peut même être DANGEREUSE !

C'est pourquoi: Par défaut, le compte UNIX "postgres" est verrouillé, ce qui signifie qu'il ne peut pas être connecté à l'aide d'un mot de passe. Si vous utilisez "sudo passwd postgres", le compte est immédiatement déverrouillé. Pire, si vous définissez le mot de passe sur une valeur faible, telle que "postgres", vous vous exposez à un grand danger pour la sécurité. Par exemple, un certain nombre de bots essaient de combiner le nom d'utilisateur / mot de passe "postgres / postgres" pour se connecter à votre système UNIX.

Ce que vous devriez faire est de suivre la réponse de Chris James :

sudo -u postgres psql postgres

# \password postgres

Enter new password: 

Pour l'expliquer un peu. Il existe généralement deux méthodes par défaut pour se connecter au serveur PostgreSQL:

  1. En exécutant la commande « psql » en tant qu'utilisateur UNIX (que l' on appelle l' authentification IDENT / PEER), par exemple: sudo -u postgres psql. Notez que sudo -ucela ne déverrouille PAS l'utilisateur UNIX.

  2. via une connexion TCP / IP utilisant le nom d'utilisateur / mot de passe géré par PostgreSQL (appelé "authentification TCP") (c'est-à-dire, PAS le mot de passe UNIX).

Donc, vous ne voulez jamais définir le mot de passe pour le compte UNIX "postgres". Laissez-le verrouillé tel qu'il est par défaut.

Bien sûr, les choses peuvent changer si vous le configurez différemment du réglage par défaut. Par exemple, on pourrait synchroniser le mot de passe PostgreSQL avec le mot de passe UNIX et n'autoriser que les connexions locales. Cela dépasserait le cadre de cette question.

utilisateur716468
la source
11
Alors, comment verrouiller l'utilisateur postgres en arrière?
ultrajohn
3
@ultrajohn - dépend de la distribution que vous utilisez, mais vous pouvez éditer / etc / passwd et mettre * à la place du mot de passe
lzap le
3
/etc/shadowest l'endroit où le mot de passe est conservé @lzap.
Gringo Suave
2
À droite, vous pouvez définir / sbin / nologin dans / etc / passwd ou mettre * à la place du mot de passe dans / etc / shadow.
Lzap
34
passwd --lock postgres
Stéphane
166

Entrez sur la ligne de commande:

$ sudo -u postgres psql postgres
postgres=# \password postgres

Tu verras:

Enter new password: 
Enter it again:
Dcrawkstar
la source
7
C’est ce qui est nécessaire pour utiliser un outil tel que pgadminIII (lors de la configuration d’un profil de serveur) immédiatement après l’installation de Postgres. Merci!
limist
64

Vous manipulez postgres via l'utilisateur postgres, comme suit:

# su - postgres
$ createdb mydb
$ psql -s mydb
# create user someuser password 'somepassword';
# GRANT ALL PRIVILEGES ON DATABASE mydb TO someuser;
David Mackintosh
la source
5
@ThierryLam Vous devez être root sur sul'utilisateur postgres sans entrer de mot de passe. Sur la plupart des systèmes, le compte Postgres Unix est verrouillé (aucun mot de passe ne fonctionnera), ce qui signifie que seul le compte root peut le sufaire.
voretaq7
2
Utilisez sudoau lieu de su.
reinierpost
8
Je devais courir sudo su - postgres: \
Jim Schubert
3
@Jim Schubert: vous pouvez aussi courir sudo -u postgres.
Reinierpost
1
sudo -u postgres psql - fonctionne aussi pour pouvoir le faire en une étape.
Ominus
21

Sous Windows, procédez comme suit (IMPORTANT: utilisez un compte d' administrateur Windows ):

  1. Après l'installation, ouvrez <PostgreSQL PATH>\data\pg_hba.conf.

  2. Modifiez ces deux lignes et remplacez "md5" par "confiance":

    host all all 127.0.0.1/32 md5

    host all all ::1/128 md5

  3. Redémarrez le service PostgreSQL (peut ne pas être nécessaire).

  4. (Facultatif) Ouvrez une invite de commande et modifiez la page de codes en 1252:

    cmd.exe /c chcp 1252

  5. Connectez-vous à PostgreSQL. Un mot de passe différent sera requis (notez le paramètre majuscule -U):

    psql -U postgres

  6. (Facultatif, recommandé pour des raisons de sécurité) Modifiez le postgresmot de passe de l'utilisateur:

    \password postgres

    et remplacez "confiance" par "md5" dans pg_hba.conf.

MS Dousti
la source
5

Si vous essayez d'accéder au shell PostgreSQL, vous pouvez taper:

psql -U postgres my_database

my_databaseest votre nom de base de données.

Marcio Mazzucato
la source