Vous n'êtes pas identifié(e).
Pages : 1
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
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
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 ?
Ce n'est pas possible.
Arf, cela ne m'arrange pas.
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
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
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
Problème résolu
Dernière modification par hannibal (28/04/2011 11:43:53)
Hors ligne
Pages : 1