Vous n'êtes pas identifié(e).
Bonjour,
J'utilise postgres depuis peu, je suis habitué à MySQL ou MariaDB.
J'ai fait l'installation de postgresql 10 sur CentOS 7
Pas de soucis lors de l'installation, tout vas bien, j'arrive à me connecter avec l'utilisateur postgres, mais en passant par sa cession
[root@bdds ~]# su postgres
bash-4.2$ psql
could not change directory to "/root": Permission non accordée
psql (10.5)
Type "help" for help.
postgres=#
Mais impossible de me connecter directement via une autre session, et cela que ce soit avec
psql -U postgres
ou
psql -U postgres -h localhost
psql -U postgres -D postgres -h localhost
J'ai l'erreur :
psql: FATAL: authentification Ident échouée pour l'utilisateur « postgres »
J'ai créer un autre utilisateur toto avec la commande suivante
CREATE ROLE toto LOGIN CREATEDB CREATEROLE INHERIT;
Mais en pareil en me connectant avec "psql -U toto" j'ai le même message d'erreur.
Merci de votre aide et explication.
Dz
Hors ligne
bonjour,
si vous faisiez "su - postgres" au lieu de "su postgres" vous vous placeriez avec l'environnement du user postgres et non pas celui de root.
Cordialement,
Sébastien.
Hors ligne
bonjour,
si vous faisiez "su - postgres" au lieu de "su postgres" vous vous placeriez avec l'environnement du user postgres et non pas celui de root.
Oui, je sais, mais ce n'est pas le prolème.
Le problème c'est pour se connecter à la base en faisant : psql -U postgres
Hors ligne
pouvez-vous nous poster votre pg_hba.conf (sans les lignes commentées) ?
Cordialement,
Sébastien.
Hors ligne
Voici le fichier
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
# Allow replication connections from localhost, by a user with the
# replication privilege.
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
Hors ligne
le user postgres a t'il été créé dans l'instance ?
Pour faire une connexion peer (en local) ou ident (à distance), il faut être sûr de 2 choses :
- le user postgres existe dans l'instance
- vous êtes connecté à l'OS en tant que postgres
il faut que les 2 users matchent exactement.
Cordialement,
Sébastien.
Hors ligne
Le pg_hba.conf par défaut est fait pour avoir un niveau de sécurité raisonnable par défaut.
C'est pourquoi il faut être utilisateur postgres sous Unix pour se connecter sans mot de passe en tant qu'utilisateur de BDD du même nom.
Si vous voulez que n'importe quel utilisateur Unix puisse se connecter avec psql -U postgres
sans mot de passe, remplacer le champ METHOD (le plus à droite) sur cette règle:
local all all peer
par celle-là:
local all all trust
Si vous voulez la même chose mais avec un mot de passe, utiliser comme méthode md5 et non trust.
Pour les connexions via -h localhost, c'est la ligne d'après qui est à modifier:
host all all 127.0.0.1/32 ident
Toutes les lignes du pg_hba.conf sont interprétées dans l'ordre comme si c'était un IF ligne1 ... ELSIF ligne2.. ELSIF ligne3.. ELSIF..
Il faut aussi faire un reload du service pour que les changements de pg_hba.conf soient pris en compte.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne
Bonjour,
désolé pour le retard de ma réponse.
Effectivement avec les modifications données par dverite, j'arrive maintenant à me connecter depuis un autre user avec psql -U toto
Question,
faut-il pour chaque utilisateur sa base pour se connecter ? même si il a des privilèges LOGIN CREATEDB CREATEROLE INHERIT
Merci
Hors ligne
faut-il pour chaque utilisateur sa base pour se connecter
Non pas spécialement. Quand on lance psql sans l'option -d pour désigner une base, il utilise par défaut le nom de l'utilisateur Unix comme nom de base. Pareil pour -U d'ailleurs. C'est le seul lien entre nom d'utilisateur et nom de base.
@DanielVerite
http://blog-postgresql.verite.pro/
Hors ligne