Hmmm ...
Si vous pouvez vous connecter avec le nom d'utilisateur et le mot de passe dans pgAdminIII mais que vous ne pouvez pas vous connecter, psql
ces deux programmes se connectent probablement différemment à la base de données.
[Si vous vous connectez à différentes bases de données, essayez d'abord de vous connecter à la même base de données. Voir ci-dessous.]
De PostgreSQL: Documentation: 9.3: psql :
Si vous omettez le nom d'hôte, psql se connectera via un socket de domaine Unix à un serveur sur l'hôte local, ou via TCP / IP à localhost sur les machines qui n'ont pas de sockets de domaine Unix.
Si vous n'exécutez pas quelque chose comme psql ... -h host_name ...
, et que vous exécutez Ubuntu, psql
vous devez vous connecter via un socket de domaine Unix, donc PostgreSQL n'est probablement pas configuré pour autoriser l'une des méthodes d'authentification par mot de passe pour l' utilisateur postgres .
Vous pouvez tester cela en exécutant:
sudo -u postgres psql
Si ce qui précède fonctionne, votre serveur est probablement configuré pour utiliser l' authentification par les pairs pour les connexions locales par l' utilisateur postgres , c'est-à-dire demander au système d'exploitation votre nom d'utilisateur pour confirmer que vous êtes postgres .
C'est donc probablement votre fichier pg_hba.conf
Le chemin complet du fichier sera quelque chose comme /etc/postgresql/9.3/main/pg_hba.conf . Vous pouvez le voir par exemple sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.
Si vous omettez le nom d'hôte dans votre psql
commande, vous devriez pouvoir vous connecter si vous ajoutez l'entrée suivante à votre fichier pg_hba.conf :
# Connection type Database User IP addresses Method
local all postgres md5
[Les lignes commentées du fichier pg_hba.conf commencent par #
.]
Si vous êtes incluez le nom d'hôte dans votre psql
commande, ajoutez cette entrée à la place:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
Vous devez mettre l'entrée avant que toute autre entrée ne corresponde à votre connexion via psql
. En cas de doute sur l'endroit où le mettre, placez-le juste avant la première ligne non commentée.
En savoir plus sur pg_hba.conf
De PostgreSQL: Documentation: 9.3: Le fichier pg_hba.conf [gras souligné]:
Le premier enregistrement avec un type de connexion , une adresse client , une base de données demandée et un nom d'utilisateur correspondant est utilisé pour effectuer l'authentification. Il n'y a pas de "relais" ou de "sauvegarde": si un enregistrement est choisi et que l'authentification échoue, les enregistrements suivants ne sont pas pris en compte. Si aucun enregistrement ne correspond, l'accès est refusé.
Notez que les enregistrements ne correspondent pas à la méthode d'authentification. Donc, si votre fichier pg_hba.conf contient l'entrée suivante:
# Connection type Database User IP addresses Method
local all postgres peer
Vous ne pourrez alors pas vous connecter via:
psql -u postgres
Sauf si l'une de ces entrées se trouve dans votre fichier pg_hba.conf au - dessus de l'entrée précédente:
# Connection type Database User IP addresses Method
local all postgres md5
local all postgres password # Unencrypted!
local all all md5
local all all password # Unencrypted!