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?
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:
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.
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.
Entrez sur la ligne de commande:
$ Sudo -u postgres psql postgres
postgres=# \password postgres
Tu verras:
Enter new password:
Enter it again:
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;
Sous Windows, procédez comme suit (IMPORTANT: utilisez un compte Windows administrateur):
Après l'installation, ouvrez <PostgreSQL PATH>\data\pg_hba.conf
.
Modifiez ces deux lignes et changez "md5" en "confiance":
Host all all 127.0.0.1/32 md5
Host all all ::1/128 md5
Redémarrez le service PostgreSQL (peut-être pas nécessaire).
(Facultatif) Ouvrez une invite de commande et remplacez la page de codes par 1252:
cmd.exe /c chcp 1252
Connectez-vous à PostgreSQL. Aucun mot de passe ne sera nécessaire (notez le paramètre -U majuscule):
psql -U postgres
(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
.
Si vous essayez d'accéder au PostgreSQL Shell, vous pouvez taper:
psql -U postgres my_database
Où my_database
est le nom de votre base de données.