OVH Cloud OVH Cloud

pb install & config de postgresql

3 réponses
Avatar
guillespie
Hello tout le monde,

voila je rencontre quelque soucis dans l'installation de postgresql,

apres l'install et l'initdb avec un user postgres et pas root,
lorsque je fait un psql, j'ai un message d'erreur;

"psql: FATAL: Database "postgres" does not exist in the system catalog."

si vous en connaissez la source ou si vous avez un lien fr-anglais, qui
indique une bonne procedure d'install, parce que sur le site meme de
postegresql, c'est pas vraiment la joie pour trouver l'info...

merci d'avance pour votre aide

BANZAÏÏÏÏ !!!
:-$

3 réponses

Avatar
Vincent VAQUIN
guillespie wrote:
Hello tout le monde,
apres l'install et l'initdb avec un user postgres et pas root,
lorsque je fait un psql, j'ai un message d'erreur;
"psql: FATAL: Database "postgres" does not exist in the system
catalog."


La syntaxe minimum de psql en local c'est :
psql nom-de-la-base-de-données nom-de-l'utilisateur

Tu dois oublier de mentionner, en deuxième paramètre, le nom de la base
de données (tu dois taper psql postgres).
Pour info, la base de données par défaut de Postgres s'appelle
template1.
Essaie donc :
psql template1 postgres

Avatar
dominique becaert

La syntaxe minimum de psql en local c'est :
psql nom-de-la-base-de-données nom-de-l'utilisateur


Ah ? Cela doit dépendre des versions ...
J'ai une machine au boulot, je pense que le postgresql doit être
d'époque avec la Mandrake 6.1 qui tourne dessus, et la syntaxe ne
nécessite qu'un seul paramètre : le nom de la base.
--
Jusqu'ici, tout va bien ...

Avatar
Vincent VAQUIN
dominique becaert wrote:
La syntaxe minimum de psql en local c'est :
psql nom-de-la-base-de-données nom-de-l'utilisateur


Ah ? Cela doit dépendre des versions ...
J'ai une machine au boulot, je pense que le postgresql doit être
d'époque avec la Mandrake 6.1 qui tourne dessus, et la syntaxe ne
nécessite qu'un seul paramètre : le nom de la base.


Et bien essaie "psql template1", il est possible que ça marche.

Le problème potentiel c'est que si ton user unix n'existe pas en tant
qu'user Postgresql, on te répondra "user XX does not exist".
L'utilisateur portant le nom "postgres" est créé par défaut à
l'installation de Postgresql précisement pour pouvoir se connecter à la
base même si personne n'a encore créé les utilisateurs postgresql.

Donc "psql template1" ne fonctionnera que si l'administrateur de la base
a créé un utilisateur référencé possédant le même nom que l'utilisateur
unix.
En effet, si tu n'indiques pas de nom d'utilisateur, la syntaxe :
"psql ma-base" tentera une connexion à "ma-base" avec le nom de
l'utilisateur unix qui a lancé la commande.
Autrement dit, si tu es connecté en tant que "toto",
"psql ma-base" est équivalent à "psql ma-base toto".

Or je subodore que si tu utilises "postgres" c'est que c'est censé
représenter le nom d'utilisateur, pas le nom de la base.

De toute façon, puisque tu obtiens :
"psql: FATAL: Database "postgres" does not exist in the system
catalog."
c'est bien que tu dois saisir "psql postgres" puisque le premier
paramètre c'est le nom de la base.
Car si tu tapes
"psql base_inexistante utilisateur_inexistant"
psql bloque en renvoyant "Database does not exist", il ne renvoie pas de
message sur le nom d'utilisateur, il s'arrête à la première erreur.

NB : Il serait très vicieux d'appeler une base "postgres"...
Parce que pour se mélanger les pinceaux entre le nom de la base et
l'utilisateur par défaut ça serait vraiment l'idéal !

<hypothèse invraisemblable>
Maintenant y'a peut-être un admin vicieux qui a créé une base portant le
nom de postgres....
A tester avec "psql postgres postgres"
Mais là, l'admin de la base, il est un peu... étrange...
</hypothèse invraisemblable>