PostgreSQL La base de donnees la plus sophistiquee au monde.

Forums PostgreSQL.fr

Le forum officiel de la communauté francophone de PostgreSQL

Vous n'êtes pas identifié(e).

#1 27/04/2011 20:12:52

hannibal
Membre

[Prob] gestion des droits utilisateurs

Bonjour a tous,

après avoir potasser la doc postgresql, je n'ai pas bien comprit une chose concernant les droits.

Je voudrai créer un utilisateur qui a tous les droits sur sa base de données (création de table , select, etc ...) mais qui ne puise pas voir ni accéder au base de données des autres utilisateurs.

je ne suis pas si je suis très clair, mais voici ce que je fais d'équivalent sur une BDD MySQL:

CREATE USER 'user'@'localhost' IDENTIFIED BY 'mdp';
CREATE DATABASE IF NOT EXISTS userDb ;
GRANT USAGE ON userDb . * TO 'user'@'localhost' IDENTIFIED BY 'mdp';
GRANT alter, create, create temporary tables, delete, drop, execute, index, insert, lock tables, select, update, on userDb.* to user@'localhost' identified by 'mdp';
FLUSH PRIVILEGES;

Voici ce que je fais pour postgresql

CREATE USER user PASSWORD 'mdp';
CREATE DATABASE userDb owner user;
REVOKE ALL ON DATABASE userDb FROM public;

Donc la mon utilisateur a tous les droits sur sa base (je ne comprend toujours pas pourquoi il a des droit vue que je n'utilise pas grant .....).

Alors j'ai troisproblèmes:
1. Mon utilisateur peut voir les bases de données des autres utilisateurs alors que moi je voudrai qu'il ne puisse voir que sa propre base.
Comment faire pour que les utilisateurs de vois pas les bases des autres ? (que la commande \l ne retourne que sa propre base de données)

2. La le problème est bien plus gênant, lorsque j'effectue  une connexion via PHP (PDO) je peux me connecté avec l'utilisateur postgres. Comment faire pour empêcher la connexion de postgres ? ceci est t'il possible ? (le probleme est que pour l'instant mon user postgres n'a pas de mot de passe !!! (un alter role résoudrai ceci ? )

3. Encore en PHP, avec la méthode de création d'utilisateur que j'ai noté plus haut, les utilisateur peuvent ce connecté sans mot de passe !!!!


voici en exemple le code PHP

$PARAM_hote='localhost'; // le chemin vers le serveur
$PARAM_port='5432';
$PARAM_nom_bd='toto'; // le nom de votre base de données
$PARAM_utilisateur='toto'; // nom d'utilisateur pour se connecter
$PARAM_mot_passe='123';

/**  
 * Le vrai mot de passe en toto, mais cela fonctionne tout de même, la connexion et la requête fonctionne ...
 * Même problème si je ne place aucun mot de passe 
 */

try
{
        $connexion = new PDO('pgsql:host='.$PARAM_hote.';dbname='.$PARAM_nom_bd, $PARAM_utilisateur, $PARAM_mot_passe);
}
catch(Exception $e)
{
        echo 'Erreur : '.$e->getMessage().'<br />';
        echo 'N° : '.$e->getCode();
}

$resultats=$connexion->query("SELECT * FROM films");
$resultats->setFetchMode(PDO::FETCH_OBJ); 
while( $ligne = $resultats->fetch() )
{
        echo 'code : '.$ligne->code.' titre'.$ligne->titre.' <br />'; 
}
$resultats->closeCursor(); /

je vous remercie d'avance pour vos lumière

Dernière modification par hannibal (27/04/2011 20:16:07)

Hors ligne

#2 27/04/2011 20:58:45

gleu
Administrateur

Re : [Prob] gestion des droits utilisateurs

je ne comprend toujours pas pourquoi il a des droit vue que je n'utilise pas grant .....

Il est le propriétaire de la base, il a par défaut tous les droits dessus.

Comment faire pour que les utilisateurs de vois pas les bases des autres ?

Ce n'est pas possible.

je peux me connecté avec l'utilisateur postgres

Il vous faut modifier le fichier pg_hba.conf pour configurer les droits de connexion.

3. Encore en PHP, avec la méthode de création d'utilisateur que j'ai noté plus haut, les utilisateur peuvent ce connecté sans mot de passe !!!!

Là encore, ça dépend de la configuration du fichier pg_hba.conf.

Le mieux est certainement de lire ce chapitre de la documentation : http://docs.postgresql.fr/9.0/client-au … ation.html


Guillaume.

Hors ligne

#3 27/04/2011 21:24:03

hannibal
Membre

Re : [Prob] gestion des droits utilisateurs

gleu a écrit :

Il est le propriétaire de la base, il a par défaut tous les droits dessus.

D'accord, je comprend mieux. Par contre il ne peut pas créer de nouvelle base de données ?

gleu a écrit :

Ce n'est pas possible.

Arf, cela ne m'arrange pas.


gleu a écrit :

Il vous faut modifier le fichier pg_hba.conf pour configurer les droits de connexion.


Là encore, ça dépend de la configuration du fichier pg_hba.conf.

Le mieux est certainement de lire ce chapitre de la documentation : http://docs.postgresql.fr/9.0/client-au … ation.html

je vais lire cela et je vous tiens au courant.
Merci

Hors ligne

#4 27/04/2011 21:40:51

gleu
Administrateur

Re : [Prob] gestion des droits utilisateurs

Par contre il ne peut pas créer de nouvelle base de données ?

S'il n'a pas l'attribut CREATEDB, non.


Guillaume.

Hors ligne

#5 28/04/2011 11:23:42

hannibal
Membre

Re : [Prob] gestion des droits utilisateurs

ah oui, exacte c'est pour cela que je ne l'ai pas mit.

donc j'ai été voir le fichier pg_hba.conf et voici a quoi il ressemble maintenant:

# TYPE  DATABASE        USER            CIDR-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

avant il était comme ceci

# TYPE  DATABASE        USER            CIDR-ADDRESS            METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust

Alors la j'ai bien les demande de mot de passe partout. Donc c'est OK.

Merci pour ton aide wink
Problème résolu tongue

Dernière modification par hannibal (28/04/2011 11:43:53)

Hors ligne

Pied de page des forums