web-dev-qa-db-fra.com

Comment configurer postgresql pour qu'il accepte l'identifiant de connexion + mot de passe?

J'ai une nouvelle installation d'ubuntu 10.10 avec toutes les mises à jour et postgresql 8.4
Pour que postgresql accepte les connexions login + password, je l’ai configuré via:

Sudo su postgres
psql
ALTER USER postgres WITH PASSWORD 'password';
CREATE DATABASE myapp;
\q
exit
Sudo vi /etc/postgresql/8.4/main/pg_hba.conf
change "local all all indent" to "local all all trust"

Mais, étonnamment, cela ne fonctionne pas! La commande

psql -U postgres password

Evalue avec erreur:

psql: FATAL:  Ident authentication failed for user "postgres"

Des astuces pour faire en sorte que le psql -U fonctionne?

30
grigoryvp

C'est probablement une bonne idée de laisser l'utilisateur "postgres" avec l'authentification ident. Par défaut, je pense qu'Ubuntu utilise l'utilisateur "postgres" pour effectuer des mises à niveau, des sauvegardes, etc., ce qui nécessite de pouvoir se connecter sans mot de passe.

Je recommande de créer un autre utilisateur (probablement avec votre propre nom d'utilisateur) et de lui donner également les privilèges d'administrateur. Ensuite, vous pouvez utiliser cet utilisateur avec des mots de passe sur les connexions locales.

Voici à quoi ressemblent les parties pertinentes de mon pg_hba.conf:

# allow postgres user to use "ident" authentication on Unix sockets
# (as per recent comments, omit "sameuser" if on postgres 8.4 or later)
local   all   postgres                         ident sameuser
# allow all other users to use "md5" authentication on Unix sockets
local   all   all                              md5
# for users connected via local IPv4 or IPv6 connections, always require md5
Host    all   all        127.0.0.1/32          md5
Host    all   all        ::1/128               md5

Notez également que psql -U postgres password ne fera pas ce que vous voulez. Le mot de passe ne doit jamais être spécifié sur la ligne de commande. Cela va essayer de vous connecter en tant qu'utilisateur "postgres" à une base de données nommée "mot de passe".

Vous devriez utiliser psql -U postgres myapp à la place. Postgres vous demandera automatiquement un mot de passe s'il est configuré correctement pour en exiger un.

Si nous voulons que le mot de passe soit rempli automatiquement, placez-le dans le fichier $ HOME/.pgpass

41
cecilkorik

Je pense que votre fichier pg_ident.conf est mal configuré. Aussi, avez-vous essayé

psql -U postgres -W
2
Max

Une autre chose qui peut causer cela est des informations d'identification expirées. Je ne pense pas que cela se soit produit dans la version 8, mais dans la version 9, lorsque vous créez un nouveau rôle dans pgadmin, il est créé dans un état arrivé à expiration et vous devez modifier ou effacer la date d'expiration du rôle avant de pouvoir vous connecter. il.

0
elc