web-dev-qa-db-fra.com

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

Je viens d'installer postgres 8.4 sur Ubuntu 9.10 et il ne m'a jamais demandé de créer un superutilisateur. Existe-t-il un superutilisateur par défaut et son mot de passe? Sinon, comment en créer un nouveau?

402
Thierry Lam

ATTENTION La réponse concernant la modification du mot de passe UNIX pour "postgres" par "$ Sudo passwd postgres" n'est pas préférée, et peut même être DANGEREUX !

C'est pourquoi: Par défaut, le compte UNIX "postgres" est verrouillé, ce qui signifie qu'il ne peut pas être connecté avec un mot de passe. Si vous utilisez "Sudo passwd postgres", le compte est immédiatement débloqué. Pire, si vous définissez le mot de passe sur quelque chose de faible, comme "postgres", vous êtes alors exposé à un grand danger pour la sécurité. Par exemple, il existe un certain nombre de robots essayant la combinaison nom d'utilisateur/mot de passe "postgres/postgres" pour se connecter à votre système UNIX.

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

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 (dénommée authentification IDENT/PEER), par exemple: Sudo -u postgres psql. Notez que Sudo -u ne déverrouille PAS l'utilisateur UNIX.

  2. par connexion TCP/IP en utilisant le propre nom d'utilisateur/mot de passe géré de PostgreSQL (soi-disant TCP) (c'est-à-dire PAS le Mot de passe UNIX).

Ainsi, vous ne souhaitez 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 paramètre par défaut. Par exemple, on pourrait synchroniser le mot de passe PostgreSQL avec le mot de passe UNIX et autoriser uniquement les connexions locales. Cela dépasserait la portée de cette question.

546
user716468

Entrez sur la ligne de commande:

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

Tu verras:

Enter new password: 
Enter it again:
170
dcrawkstar

Vous manipulez les 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;
64
David Mackintosh

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

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

  2. Modifiez ces deux lignes et changez "md5" en "confiance":

    Host all all 127.0.0.1/32 md5

    Host all all ::1/128 md5

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

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

    cmd.exe /c chcp 1252

  5. Connectez-vous à PostgreSQL. Aucun mot de passe ne sera nécessaire (notez le paramètre -U majuscule):

    psql -U postgres

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

    \password postgres

    et changez "confiance" en "md5" dans pg_hba.conf.

21
M.S. Dousti

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

psql -U postgres my_database

my_database est le nom de votre base de données.

5
Marcio Mazzucato