IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PostgreSQL Discussion :

sélection des bd en fonction des utilisateurs (pg_hba.conf)


Sujet :

PostgreSQL

  1. #1
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut sélection des bd en fonction des utilisateurs (pg_hba.conf)
    Salut,

    J'ai un serveur postgres 7.4 sur BSD dans un intranet. Je souhaiterai que mes utilisateurs puissent voir seulement les bases de données qui les concerne. Je sais que dans le fichier pg_hba.conf on peut spécifier les groupes et base de données, mais je n'arrive pas à faire exactement ce que je veux.

    mes utilisateurs(ou groupes) sont sur le même intranet

    groupe grX peut voir seulement la base de données bdX

    groupe grY peut voir seulement la base de données bdY

    dans mon fichier pg_hba.conf j'ai inscris:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    host    bdX         +grX     193.ooo.nnn.mmm    0.0.0.0          md5
    host    bdY         +grY     193.ooo.nnn.mmm    0.0.0.0          md5
    où 193.ooo.nnn.mmm est l'adresse ip de mon serveur (connection local uniquement).

    Mais cela ne fonctionne pas. Les groupes voient toutes les bases de données.

    Qqun à une idée?

    P.S: A noter que j'ai redémarré mon serveur après chaque changement.

  2. #2
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 318
    Points
    318
    Par défaut
    salut,

    as-tu d'autres lignes dans ton fichier ?

    J'ai essayé en mettant juste une restriction et cela a marché. Mais si tu as, dans ton fichier, une autre ligne avant qui donne des droits plus élargis, je pense que c'est cumulatif et non restrictif..... je suis compréhensible là ????

    @+

  3. #3
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Oui c'est tout à fait compréhensible. J'ai fait plusieurs tests et j'arrive enfin à faire ce que je veux. Mon fichier contient:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # TYPE  DATABASE                USER    IP-ADDRESS      IP-MASK           METHOD
    local   bd1,bd2,bd3             +gr1                                      md5
    local   bd4,bd5,bd6             +gr2                                      md5
    local   all                     dba,pgsql                                 md5
     
    host    bd1,bd2,bd3             +gr1      10.192.mmm.0     255.255.nnn.0  md5
    host    bd4,bd5,bd6             +gr2      10.192.mmm.0     255.255.nnn.0  md5
    host    all                     dba,pgsql 10.192.mmm.0     255.255.nnn.0  md5
     
     
    host    bd1,bd2,bd3             +gr1      uuu.rrr.sss.ppp  0.0.0.0        md5
    host    bd4,bd5,bd6             +gr2      uuu.rrr.sss.ppp  0.0.0.0        md5
    host    all                     dba,pgsql uuu.rrr.sss.ppp  0.0.0.0        md5
    Qu'en pensez-vous? Où uuu.rrr.sss.ppp est l'adresse ip fixe de mon serveur

    J'ai encore un problème.

    Tout cela fonctionne avec psql mais avec phpPgAdmin, je n'arrive pas à me connecter! Qqun aurait une idée? Mon serveur Apache est sur le même serveur que postgres.

    En lisant la doc, j'ai vu que postgres parse le fichier pg_hba.conf et dès qu'il voit une ligne qui réponds à la demande de connection, il la valide.

    Merci pour votre aide.

  4. #4
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 318
    Points
    318
    Par défaut
    Salut,

    Avec quel user as-tu essayé ? (tous j'imagine)

    Tes users ont-ils des mots de passe ou non ? (phpPgAdmin oblige par défaut à avoir un mot de passe)

    As-tu un message d'erreur à l'écran ?

    As-tu jeté un coup d'oeil dans tes logs postgresql ou apache ?

    As-tu mis assez de sucre dans ton café ? .... heu non..... hors sujet, désolé...

    @+

  5. #5
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par Krapulax
    Avec quel user as-tu essayé ? (tous j'imagine)
    Oui avec tous. Cela fonctionne parfaitement avec chaque groupe ou user. Une amélioration possible... tu peux faire un \l et dans ce cas là, tous les users peuvent voir toutes les bd mais ne peuvent pas s'y connecter.

    Citation Envoyé par Krapulax
    Tes users ont-ils des mots de passe ou non ? (phpPgAdmin oblige par défaut à avoir un mot de passe)
    Oui ils en ont. Oui je sais pour phpPgAdmin

    Citation Envoyé par Krapulax
    As-tu un message d'erreur à l'écran ?
    Login failed dans phpPgAdmin (version 3).

    Citation Envoyé par Krapulax
    As-tu jeté un coup d'oeil dans tes logs postgresql ou apache ?
    Je vais le faire... mais je ne suis pas administrateur sur le serveur... juste sur postgres. Je vais pouvoir les consulter cet après-midi.

    Citation Envoyé par Krapulax
    As-tu mis assez de sucre dans ton café ? .... heu non..... hors sujet, désolé...
    Ben en fait, on en a plus... j'ai mis de l'insugrine. beurk pô bon!

    je vais consulter les log cet après-midi et je te redis.

    A+

  6. #6
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Bon, les logs ne m'ont rien appris. Par contre j'ai trouvé la solution, mais j'ai toujours un problème.

    Le truc qui est un peu étrange avec Postgres, c'est que lorsque tu souhaites te connecter au serveur, tu es obligé de spécifier une base de données (Oracle par exemple ne nécessite pas de se spécifier une bd...). Dans le fichier de config de phpPgAdmin, il y a template1 comme base de données par défaut. Comme mes deux groupes n'avaient pas accès à cette base de données, ils ne pouvaient pas se connecter. fallait y penser

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $conf['servers'][0]['desc'] = 'PostgreSQL';
    $conf['servers'][0]['host'] = '';  
    $conf['servers'][0]['port'] = 5432;
    $conf['servers'][0]['defaultdb'] = 'template1';
    Je n'ai pas spécifié de base de données par défaut:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $conf['servers'][0]['desc'] = 'PostgreSQL';
    $conf['servers'][0]['host'] = '';  
    $conf['servers'][0]['port'] = 5432;
    $conf['servers'][0]['defaultdb'] = '';
    Etonnemment cela fonctionne, je ne sais pas quel base de données il utilise pour se connecter. J'ai pas de problème pour les groupes gr1 et gr2 mais pour les utilisateurs dba et pgsql, c'est tjs impossible de se connecter. Pourquoi? En plus de cela, ils ont bien accès à toutes les bases de données?!?!?

    Une idée?

  7. #7
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 318
    Points
    318
    Par défaut
    En général, quand tu ne spécifies pas de base, il essayes de se connecter à une base de même nom que le login. Cependant, je ne sais pas si phpPgAdmin fais un test à un moment pour savoir si il y a une base de spécifier. Peut-être prends-il la première base spécifiée et autorisée dans ton pg_hba.conf ?

    Regards aussi si tu as une variable shell PGDATABASE, qui est la base par défaut pour la connection.

    Pour les superusers, du fait qu'ils ont accès à tous, postgresql à peut-être du mal à déterminer une base par défaut...

    Je ne trouve que le fait de devoir spécifier une base soit contraignant : de toute façon, si tu te connectes, c'est pour bosser sur des données. Donc que tu choississes d'abord une base ou faire un "USE" ensuite, c'est kif-kif...

    @+

  8. #8
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Citation Envoyé par Krapulax
    En général, quand tu ne spécifies pas de base, il essayes de se connecter à une base de même nom que le login.
    Bingo... bien joué! C'est juste! Il prend la base de données de même nom que le login. Bon comme tu pouvais t'en douter mes groupes et bd ne sont pas gr.1,bd,... mais un peu plus explicite! Donc effectivement, je n'avais pas de bd qui porte le nom pgsql ou dba.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $conf['servers'][0]['desc'] = 'PostgreSQL'; 
    $conf['servers'][0]['host'] = '';  
    $conf['servers'][0]['port'] = 5432; 
    $conf['servers'][0]['defaultdb'] = 'template1';
    J'ai vu que tu pouvais faire pls noms de serveur dans phpPgAdmin en répétant cette config pls fois... je vais essayer.

    Citation Envoyé par Krapulax
    Regards aussi si tu as une variable shell PGDATABASE, qui est la base par défaut pour la connection.
    Non j'en ai pô!

    Citation Envoyé par Krapulax
    Je ne trouve que le fait de devoir spécifier une base soit contraignant : de toute façon, si tu te connectes, c'est pour bosser sur des données. Donc que tu choississes d'abord une base ou faire un "USE" ensuite, c'est kif-kif...
    Ben si tu es administrateur... tu peux te connecter pour gérer ton serveur postgres (user,group,...) sans vouloir te connecter à une base de données spécifique. De plus, tu vois bien que dans certain cas (particulier, je te l'accorde) cela dérange un peu de devoir spécifier une bd. Mais bon, après réflexion, c'est vrai qu'en régle générale tu veux travailler sur une bd spécifique.

    Je vais voir si j'arrive à résoudre encore ces quelques erreurs.

    Merci pour ton aide Krapulax.

    A+

    P.S: Pis c'est cool, avant de commencer ce post, j'avais cherché des exemples de configuration du fichier pg_hba.conf avec des groupes et des bd spécifiques mais sans succès. Maintenant il y en aura un

  9. #9
    Membre averti
    Inscrit en
    Octobre 2003
    Messages
    266
    Détails du profil
    Informations forums :
    Inscription : Octobre 2003
    Messages : 266
    Points : 318
    Points
    318
    Par défaut
    Content d'avoir pu t'aider.

    P.S: Pis c'est cool, avant de commencer ce post, j'avais cherché des exemples de configuration du fichier pg_hba.conf avec des groupes et des bd spécifiques mais sans succès. Maintenant il y en aura un
    Je me suis fais exactement la même réflexion

  10. #10
    Membre actif

    Profil pro
    Inscrit en
    Juin 2003
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2003
    Messages : 209
    Points : 249
    Points
    249
    Par défaut
    Salut,

    Voilà cela fonctionne. Il faut rajouter autant de nom de server que l'on veut et mettre pour chaque nom de serveur une base de données par défaut.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    »---// An example server.  Create as many of these as you wish,
    »---// indexed from zero upwards.
    »---$conf['servers'][0]['desc'] = 'bd1name'; // Display name for server
    »---$conf['servers'][0]['host'] = '';
    »---$conf['servers'][0]['port'] = 5432;        
    »---$conf['servers'][0]['defaultdb'] = 'bd1'; 
    »---// Example for a second server
    »---$conf['servers'][1]['desc'] = 'bd2name';
    »---$conf['servers'][1]['host'] = '';
    »---$conf['servers'][1]['port'] = 5432;
    »---$conf['servers'][1]['defaultdb'] = 'bd2';
    »---// Example for a third server
    »---$conf['servers'][2]['desc'] = 'superuser';
    »---$conf['servers'][2]['host'] = '';
    »---$conf['servers'][2]['port'] = 5432;
    »---$conf['servers'][2]['defaultdb'] = 'template1';
    Voici un chouette exemple de configuration du fichier pg_hba.conf avec les problèmes liées à phpPgAdmin.

    Je remercie Krapulax qui m'a bcp aidé!


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 07/11/2007, 11h06
  2. Réponses: 6
    Dernier message: 16/10/2007, 21h07
  3. Recherche des enregistrements en fonction des paramètres
    Par infoctet dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 10/01/2007, 10h51
  4. conception des liste en fonction des piles
    Par sino dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/06/2006, 22h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo