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).

#2 Re : Général » [QST] connexion avec fichier pgpass » 25/06/2011 11:12:32

oui, je me doute, mais dans ce cas le fichier ne peux plus etre dans /root wink

#3 Re : Général » [QST] connexion avec fichier pgpass » 24/06/2011 20:52:40

gleu a écrit :

Une possibilité serait que le pg_dump ne s'exécute pas en tant qu'utilisateur root. Ça dépend en fait de la configuration de sudo.

Je peux faire quoi pour ça ?
De toute façon même une connexion basique  ( psql -U postgres), le fichier pgpass de mon /root ne fonctionne pas donc .....
Je pense que si on trouve pour cela, on trouve pour tout wink

sinon le home de mon root est bien /root wink

#4 Re : Général » [QST] connexion avec fichier pgpass » 24/06/2011 20:43:22

Bon tu dois avoir raison, si je vire mon sudo sa fonctionne ....
donc pourquoi sa ne fonctionne pas ????
aucune idée voici les droits sur mon fichier .pgpass dans mon /root

-rw-------  1 root root    38 24 juin  18:27 .pgpass

#5 Re : Général » [QST] connexion avec fichier pgpass » 24/06/2011 20:38:29

bon j'ai avancé, j'ai créé le fichier .pgpass dans le home de mon user apache et maintenant sur je fait un

su -c "/usr/local/pgsql/bin/pg_dump --create --inserts -U postgres toto" apache2

Sa fonctionne nickel, par contre, dans mon fichier php je vais ceci:

echo shell_exec('sudo /usr/local/pgsql/bin/pg_dump --create --inserts -U postgres toto');

Et la j'ai rien pas un message d'erreur, rien ......

#6 Re : Général » [QST] connexion avec fichier pgpass » 24/06/2011 20:02:12

non, je ne crois pas, car sudo donne les droit root mais l'utilisateur qui utilise sudo ne devient pas root.
( et comme je l'ai dit plus haut, si je place mon pgpass dans mon /root , cela ne fonctionne pas )

#7 Re : Général » [QST] connexion avec fichier pgpass » 24/06/2011 19:53:06

mon utilisateur apache2 (son accès est bien sécurisé wink )
(il execute un script qui fait le pg_dump via la commande sudo )

#8 Général » [QST] connexion avec fichier pgpass » 24/06/2011 18:30:01

hannibal
Réponses : 14

Bonjour a tous,

j'ai une interface php qui doit pouvoir faire des backup de base de donnée.
Pour ce faire je me suis donc naturellement orienté vers l'utilitaire pg_dump.
Pour le mot de passe, j'ai vue qu'il existait un fichier .pgpass
http://docs.postgresql.fr/9.0/libpq-pgpass.html


j'ai donc tout d'abort testé de mettre le .pgpass dans mon home (je suis root)
voici le fichier pgpass

localhost:5432:*:postgres:monMotDePasse

mais malheuresement cela ne fonctionne pas


psql -U postgres
psql: FATAL:  authentification par mot de passe échouée pour l'utilisateur  « postgres »
mot de passe récupéré dans le fichier fichier « /root/.pgpass »

Je pense que postgres n'arrive pas a acceder au fichier (vue qu'il est dans /root)
Donc comment faire pour placé le pgpass a un autre emplacement ?
(j'ai bien vue  que la variable PGPASSFILE permettait ceci, mais comment la modifier ? )
Merci d'avance pour votre aide wink

#10 Re : Général » [QST] mot de passe utilisateur postgres » 24/06/2011 18:06:52

ah oui exacte.... la je me sent vraiment bete ....
Merci smile

#11 Re : Général » [QST] mot de passe utilisateur postgres » 24/06/2011 17:46:05

oui c'est normale car c'est ligne sont tiré d'un script shell (donc '"$MDP"' --> 'motDePasse' )

psql -U postgres
Mot de passe pour l'utilisateur postgres :
psql: FATAL:  authentification par mot de passe échouée pour l'utilisateur  « postgres »

Le fichier pga_conf au cas ou

# 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

#12 Général » [QST] mot de passe utilisateur postgres » 24/06/2011 17:38:21

hannibal
Réponses : 7

Bonjour a tous,

je viens d'installé le SGBD postgresql, et je cherche a mettre un mot de passe pour la connexion de l'utilisateur postgres.
Pour ce faire, j'ai essayé ceci

MDP=motDePasse
/usr/local/pgsql/bin/psql -U postgres -d template1 -c "ALTER USER postgres WITH PASSWORD '"$MDP"'"

# Modification du type d’authentification (passe du mot trust au mode md5) 
sed -i "s@ trust@ md5@g" /usr/local/pgsql/data/pg_hba.conf

/etc/init.d/postgresql restart

mais maintenant, impossible de ce connecter avec mon mot de passe, je suis toujours refuser...
Donc auriez vous une idée de comment faire ?

Merci d'avance pour votre aide;)

#13 Général » [QST] connexion psql avec mot de passe » 28/04/2011 11:49:29

hannibal
Réponses : 1

Bonjour a tous,

je script certaine action sur mon serveur postgresql.
Le but de ce script est d’être non interactif.

Le problème qui se pose a moi est que lorsque je veux me loguer, un prompt me demande un mot de passe.
Ceci bloque mon script car je le rappel il doit etre non interactif.

Donc je voudrai savoir comment faire pour passer mon mot de passe en ligne de commande afin que ce prompt ne soit pas affiché.
Comme lorsque sur une BDD MySQL nous utilisons la commande:

mysql -u user-pmotdepasse -e "commande sql;"

Je vous remercie d'avance pour vos lumière.

Cordialement Hannibal

#14 Re : Général » [Prob] gestion des droits utilisateurs » 28/04/2011 11:23:42

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

#15 Re : Général » [Prob] gestion des droits utilisateurs » 27/04/2011 21:24:03

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

#16 Général » [Prob] gestion des droits utilisateurs » 27/04/2011 20:12:52

hannibal
Réponses : 4

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

Pied de page des forums

Propulsé par FluxBB