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 :

Utilisation d'une utilisateur avec postgres


Sujet :

PostgreSQL

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 34
    Points : 17
    Points
    17
    Par défaut Utilisation d'une utilisateur avec postgres
    Je suis en train d'importer une base postgres et ai les pires difficultés pour la faire fonctionner.

    Je n'ai pu pour l'instant la faire fonctionner qu'en me connectant avec l'administrateur de postgres. J'ai pourtant créé un utilisateur pour la base, mais il ne peut pas être utilisé. Lorsque je l'indique, il me répond :
    E_WARNING - #80 - /var/www/vhosts/domaine.name/httpdocs/class/db.php - pg_connect() [function.pg-connect]: Unable to connect to PostgreSQL server: FATAL: no pg_hba.conf entry for host "127.0.0.1", user "destin_user", database "destin", SSL off
    Que dois-je mettre dans le pg_hba.conf ?

    Par ailleur, la base une fois importée appartient à postgre et je ne vois nulle part l'appartenance à cet utilisateur. Cela peut-il géner l'accès à la base ?

    Merci.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 34
    Points : 17
    Points
    17
    Par défaut Complément
    Après avoir ajouté au fichier pg_hba.conf les deux lignes suivantes,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    host   all          all         127.0.0.1         255.255.255.255   trust
    local   all          all                                            trust
    j'arrive à me connecter semble-t-il, mais l'erreur maintenant est lors des requêtes :
    E_WARNING - #174 - /var/www/vhosts/domaine.name/httpdocs/class/db.php - pg_query() [function.pg-query]: Query failed: ERROR: permission denied for relation Lan
    PS : en modifiant "trust" par "password", même résultat.

    Merci.

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 143
    Points
    143
    Par défaut
    pg_hba.conf ne permet que d'autoriser la connexion à une ou plusieurs bases de données. Elle ne gère pas les droits en dehors de la connexion.

    La base ayant été créé par postgres, par défaut, tous les objets lui appartiennent. Ton nouvel utilisateur n'a donc aucun droit dessus.

    Deux solutions :
    1. tu donnes le droit à cet utilisateur pour chaque objet (autrement dit, c'est galère)
    2. tu supprimes cette base, tu la recrées en lui donnant comme propriétaire ton nouvel utilisateur, tu ré-importes ta base (en espérant que le dump ne va pas donner les objets à l'utilisateur postgres) et c'est bon.

    Dernier mot sur le pg_hba.conf. En indiquant trust comme méthode d'authentification, toute personne qui souhaite se connecter n'a besoin que du nom de l'utilisateur. postgres est généralement l'admin par défaut. Donc n'importe qui qui a un accès réseau à ce serveur peut se connecter en superutilisateur sur la base de données. Autrement dit, tout le monde peut faire les pires choses sur tes données.

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Va pour la méthode 1 ...
    D'office la base est créée avec postgre en owner de 'public'. Je ne suis pas sûr, mais il me semble bien que postgre est aussi utilisé dans le dump comme propriétaire ou utilisateur des tables.

    Pour changer les droits de l'utilisateur, c'est bien avec la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GRANT ALL PRIVILEGES ON "table" TO PUBLIC, "user";
    pour chaque table ?
    Quant aux fonctions, etc., il n'y a pas de droits à attribuer ?


    Je me doute du pb avec 'trust', c'est pourquoi je l'ai remplacé par 'password'.

    Merci.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 143
    Points
    143
    Par défaut
    Il faut utiliser GRANT pour chaque objet : table, séquence, fonction, schéma.
    Le mieux est de lire la partie sur les droits (http://www.postgresql.org/docs/8.2/i...rivileges.html) et la page de référence sur GRANT (http://www.postgresql.org/docs/8.2/i...sql-grant.html).

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 34
    Points : 17
    Points
    17
    Par défaut
    Au lieu de GRANT, j'ai trouvé dans la doc la commande ALTER TABLE qui semble recommandée et permet de changer le propriétaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE table OWNER TO new owner
    Je viens de changer le propriétaire des tables et views (les séquences étaient avec le bon propriétaire). Les erreurs que j'avais ont disparues. Par contre, je ne vois pas de propriétaire aux fonctions dans phpPgAdmin, c'est normal ?

    Merci.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2007
    Messages
    128
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 128
    Points : 143
    Points
    143
    Par défaut
    ALTER TABLE te permet de modifier le propriétaire et c'est une bonne solution à ton problème. Il va falloir faire de même pour les séquences et les fonctions. Le propriétaire n'est peut-être pas affiché par phpPgAdmin mais il y en a un, c'est certain.

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

Discussions similaires

  1. [WD9] Utilisation d'une jauge avec FTPEnvoie
    Par dom1950 dans le forum WinDev
    Réponses: 2
    Dernier message: 17/08/2007, 16h45
  2. [VBA-E] - Utilisation d'une variable avec la propriete offset
    Par ekynoxx dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/05/2007, 18h31
  3. [C#] utilisation d'une webcam avec DirectShow
    Par legillou dans le forum Windows Forms
    Réponses: 2
    Dernier message: 16/06/2006, 15h39
  4. Limiter les affichages d'une requete avec POstgre
    Par jenny50 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 12/01/2006, 16h26
  5. Utilisation d'une variable avec l'instruction 'USE'
    Par florantanplan dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 10/11/2005, 10h39

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