Je viens d'installer Postgres 8.4 sur Ubuntu 9.10 et il ne m'a jamais demandé de créer un superutilisateur. Y a-t-il un superutilisateur par défaut et son mot de passe? Si non, comment en créer un nouveau?
Je viens d'installer Postgres 8.4 sur Ubuntu 9.10 et il ne m'a jamais demandé de créer un superutilisateur. Y a-t-il un superutilisateur par défaut et son mot de passe? Si non, comment en créer un nouveau?
Réponses:
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:
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 -u
cela ne déverrouille PAS l'utilisateur UNIX.
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.
/etc/shadow
est l'endroit où le mot de passe est conservé @lzap.
Entrez sur la ligne de commande:
$ sudo -u postgres psql postgres
postgres=# \password postgres
Tu verras:
Enter new password:
Enter it again:
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;
su
l'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 su
faire.
sudo
au lieu de su
.
sudo su - postgres
: \
sudo -u postgres
.
Sous Windows, procédez comme suit (IMPORTANT: utilisez un compte d' administrateur Windows ):
Après l'installation, ouvrez <PostgreSQL PATH>\data\pg_hba.conf
.
Modifiez ces deux lignes et remplacez "md5" par "confiance":
host all all 127.0.0.1/32 md5
host all all ::1/128 md5
Redémarrez le service PostgreSQL (peut ne pas être nécessaire).
(Facultatif) Ouvrez une invite de commande et modifiez la page de codes en 1252:
cmd.exe /c chcp 1252
Connectez-vous à PostgreSQL. Un mot de passe différent sera requis (notez le paramètre majuscule -U):
psql -U postgres
(Facultatif, recommandé pour des raisons de sécurité) Modifiez le postgres
mot de passe de l'utilisateur:
\password postgres
et remplacez "confiance" par "md5" dans pg_hba.conf
.
Si vous essayez d'accéder au shell PostgreSQL, vous pouvez taper:
psql -U postgres my_database
Où my_database
est votre nom de base de données.