Vous n'êtes pas identifié(e).
Pages : 1
bon, j'ai fait sans sudo
Merci pour ton aide
oui, je me doute, mais dans ce cas le fichier ne peux plus etre dans /root
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
sinon le home de mon root est bien /root
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
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 ......
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 )
mon utilisateur apache2 (son accès est bien sécurisé )
(il execute un script qui fait le pg_dump via la commande sudo )
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
Je pense oui... les quotes, un vrai bonheur
ah oui exacte.... la je me sent vraiment bete ....
Merci
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
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;)
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
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
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
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
Pages : 1