Connexion postgresql impossible

Bonjour,
je n’arrive pas à me connecter à postgresql avec un utilisateur du nom de “zabbix” que je viens de créer.
Le système me répond que “le role zabbix n’est pas autorisé à se connecter”.

Je n’arrive pas non plus à me connecter à mon serveur de BDD via PGADMIN 3 et avec l’utilisateur créé par défaut qui est “postgres”.

Auriez-vous une idée du problème ? Serais-ce lié au “pg_hba.conf” ?

Salut,

[quote=“Pedrox13”]je n’arrive pas à me connecter à postgresql avec un utilisateur du nom de “zabbix” que je viens de créer.
Le système me répond que “le role zabbix n’est pas autorisé à se connecter”.[/quote]

C’est là une description ultra short, de cet incident et le mode opératoire lors de la création de cet utilisateur [mono]zabbix[/mono].
Qui se trouve être bafoué légitiment, du reste … :033

[quote=“http://doc.ubuntu-fr.org/”]Notez que l’installation ajoute l’utilisateur postgres à la liste des utilisateurs. Utilisez finger si vous souhaitez de plus amples informations sur ce nouvel utilisateur ([mono]finger[/mono] est un utilitaire permettant de consulter les informations relatives aux utilisateurs système, il n’est pas installé par défaut (…)

finger postgres

L’utilisateur postgres

PostgreSQL est un serveur qui permet de se connecter à différentes bases de données. Par défaut, seul l’utilisateur postgres peut se connecter.

Toutes les opérations d’administration se font, au départ, avec l’utilisateur postgres. À la fin de l’installation, celui-ci ne possède pas de mot de passe : c’est un utilisateur bloqué et le mieux est qu’il le reste. La première chose à faire sera de créer un nouvel utilisateur, mais pour ce faire, il faut se connecter au moins une fois en tant qu’utilisateur postgres. Pour devenir postgres et faire les opérations d’administration qui suivent, utilisez [mono]sudo[/mono] :

$ sudo -i -u postgres Password:
[mono]exit[/mono] permettra, à la fin de cette session d’administration dans PostgreSQL, de reprendre la main en tant qu’utilisateur du système.

Il se peut que cette authentification retourne une erreur liée au fait qu’il est impossible pour postgres de lire, par exemple, le fichier [mono]~/.bashrc[/mono] (si un terminal bash est utilisé). La commande [mono]chmod ug+r ~/.bashrc[/mono] exécutée avant la connexion postgres réglera ce problème.

Désormais, l’invite de commande doit mentionner que vous êtes actif en tant que postgres. Pour lancer l’outil d’administration de PostgreSQL, tapez simplement :

$ psql

Vous devriez obtenir quelque chose comme :

[code]psql (9.1.5)
Type “help” for help.

postgres=# [/code]
[/quote]

[quote=“http://doc.ubuntu-fr.org/”]Méthode alternative pour créer un utilisateur

Vous pouvez aussi créer vos utilisateurs directement en ligne de commande, depuis le terminal standard, mais en étant connecté en tant que postgres, bien sûr.

Cette méthode est beaucoup plus sûre que la précédente. Tous les utilisateurs auront des mots de passe chiffrés. (Ce qui n’est pas le cas lorsque l’on emploie la méthode précédente)

Il faut d’abord modifier le fichier de configuration pour autoriser les connexions via mot de passe chiffré :

sudo nano /etc/postgresql/x.x/main/pg_hba.conf

Remplacez “[mono]x.x[/mono]” par le numéro de version de PostgreSQl installée sur votre ordinateur (exemple : [mono]9.1[/mono]).

Les utilisateurs “avancés” noteront que le fichier est amplement commenté.
Voir la documentation pour plus d’informations.

Si vous modifiez les paramètres de la sécurité, avant de relancer postgresql pensez à donner un mot de passe à l’utilisateur postgres (voir plus bas)

Modifier le fichier en remplaçant [mono]ident sameuser[/mono] par [mono]md5[/mono] afin d’obtenir les lignes suivantes :

...
# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
...[/code]

La modification des paramètres de connexion au serveur nécessite son redémarrage pour que ces derniers soient pris en compte.

[code]$ sudo /etc/init.d/postgresql restart[/code]

ou

[code]$ sudo pg_ctlcluster 9.1 main restart[/code]

On peut ensuite créer notre utilisateur :

[code]
$ sudo -i -u postgres[/code]
[code]$ createuser -P <nom_utilisateur>
Enter password for new role: 
Enter it again: 
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
[/code]

Puis, on lui crée une base de données dédiée :

[mono]$ createdb -O <nom_utilisateur> -E UTF8 <ma_database>[/mono]

Si vous avez recréé le groupe de bases de de données (cluster) avec les locales UTF8, il ne sera pas nécessaire de préciser l'option -E UTF8 car la base modèle par défaut (template1) présente déjà cet encodage

L'option[mono]-O <nom_utilisateur>[/mono] est là pour préciser l'identité du propriétaire de la base [mono]<ma_database>[/mono].

Ensuite, on peut se connecter via :

[code]$ psql -U <nom_utilisateur>
Mot de passe pour l'utilisateur <nom_utilisateur> : 

[/quote]