Vous n'êtes pas identifié(e).
Bonjour Marc,
J'ai fait un ENV et ma variable PATH est :
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/home/postgres/bin:/usr/local/pgsql/bin
J'exécute en User postgres.
Bonjour à tous,
Je travaille sur une version 9.0 sous Cent-OS.
J'ai récupéré le package check_postgres.tar.gz (2.18.0), décompréssé, lu le fichier README.
J'essaye la procédure d'install :
perl Makefile.PL
make
make test
make install
Le make test me retourne des erreurs :
PERL_DL_NONLAZY=1 /usr/bin/perl "-MExtUtils::Command::MM" "-e" "test_harness(0, 'blib/lib', 'blib/arch')" t/*.t
t/00_basic.................ok
t/00_signature.............skipped
all skipped: Test skipped unless environment variable RELEASE_TESTING is set
t/00_test_tester...........skipped
all skipped: Test skipped unless environment variable RELEASE_TESTING is set
t/02_autovac_freeze........dubious
Test returned status 255 (wstat 65280, 0xff00)
DIED. FAILED tests 1-8
Failed 8/8 tests, 0.00% okay
t/02_backends..............dubious
Test returned status 255 (wstat 65280, 0xff00)
.........
.........
DIED. FAILED tests 1-2
Failed 2/2 tests, 0.00% okay
t/99_cleanup...............ok
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------------------------------------------------------------------
t/02_autovac_freeze.t 255 65280 8 16 200.00% 1-8
t/02_backends.t 255 65280 53 106 200.00% 1-53
t/02_bloat.t 255 65280 30 60 200.00% 1-30
Quel est le problème ?
Y-a-t'il des pré-requis ?
Je ne trouve pas d'infos sur le net pour l'install.
Pouvez-vous m'aider ?
Rebonjour,
Ok, merci à vous.
Bonjour,
Je n'ai pas trouvé le forum SQL, je me permets donc de poster dans PL/pgSQL.
Est-il possible d'utiliser IN et LIKE à la fois ?
Je m'explique:
j'ai une liste de valeurs : PUBLICITE, CINEMA, PECHE.
j'ai une table des livres (ID,LIBELLE) :
1 LA PECHE A LA TRUITE
2 LA PECHE EN MER
3 A L'AFFICHE DU CINEMA
4 ....
5 AU CINEMA CE SOIR
6 ....
7 ....
8 TOUTE LA PUBLICITE
9 ....
je voudrai trouver tous les livres dont le libellé contient mes valeurs.
Question subsidiaire : est-ce que cela peut fonctionner également sous Oracle ?
D'avance merci pour les réponses.
Super Marc, cela fonctionne à merveille, merci pour l'explication.
Bonjour à tous,
Je travaille sur des bases supérieures à 8.0 sous Red-Hat et Cent-OS.
Je souhaite donner le droit d'exécution sur un paquet de Fonctions Utilisateurs.
J'ai la syntaxe : GRANT EXECUTE ON FUNCTION nomfonction (typearg) TO nomrole.
J'ai trouvé la table pg_proc qui contient la liste des Fonctions.
Mon problème est de récupérer la liste des types des arguments.
Est-ce le champ proargtypes ?
Et ensuite faut-il croiser avec la table pg_type ?
Il s'agit d'un tableau de vecteurs, comment avoir les noms des types ?
Pouvez-vous m'apporter de l'aide ?
Merci par avance.
Bonjour à tous,
Merci Marc pour la réponse négative.
Je vais chercher des exemples Perl, ou peut être Java ? pour la déclaration des tableaux associatifs, et l'appel sous plpgsql.
Si vous avez un lien, je suis preneur.
Bonjour à tous,
Je travaille sur des bases supérieures à 8.0 sous Red-Hat et Cent-OS.
J'ai utilisé la commande "GRANT SELECT ON ALL TABLES IN SCHEMA monschema TO groupe_select;" en version 9, pour donner le droit de lire toutes les tables de mon schéma.
Cette commande ne passe pas en version 8.
Faut-il donner le droit table par table ?
J'imagine qu'il y a une autre méthode mais je n'ai pas trouvé.
Merci d'avance pour votre aide.
Bonjour,
Je travaille en version 8 et 9 sous Red-hat et Cent-OS.
J'ai des Fonctions Oracle à réécrire avec ce genre de déclarations :
TYPE tablevar IS RECORD (
vbl varchar2(2000),
err_code number,
obligatoire number(1),
existence number(1),
type varchar2(50)
);
TYPE tablectrl IS TABLE OF tablevar INDEX BY VARCHAR2(50) ;
Est-il possible de faire cela sous PostgreSQL ?
D'avance merci pour les réponses.
Bonjour Marc,
D'accord, le principal étant qu'un simple utilisateur ne puisse accéder au contenu des tables.
Concernant Public, y-a-t'il des choses à sécuriser ?
Autre exemple, je vois que mon simple utilisateur peut consulter les tables pg_user, pg_stat_activity, ... Est-il possible d'empêcher cela ?
Bonjour à tous,
Je viens de créer un rôle USER_BASIC (cet Utilisateur peut uniquement consulter les tables du schema TEST) :
CREATE ROLE user_basic INHERIT LOGIN ENCRYPTED PASSWORD 'user_basic1' IN ROLE GROUPE_BASIC;
Le rôle GROUPE_BASIC est défini comme suit :
CREATE ROLE GROUPE_BASIC NOINHERIT;
GRANT USAGE ON SCHEMA TEST TO GROUPE_BASIC;
GRANT SELECT ON ALL TABLES IN SCHEMA TEST TO GROUPE_BASIC;
Cet utilisateur peut utiliser l'outil PgAdmin pour ces consultations.
Est-il possible d'empêcher l'affichage des autres Schémas et de leurs contenus ?
De façon plus générale, est-il possible d'empêcher la consultation de toutes autres informations que celles définies dans les groupes et droits ?
Je pense notamment au PUBLIC.
Je reçois à présent des mails d'erreur de l'appli JAVA :
ERROR: permission denied for sequence test_id_seq
Cela laisse penser que mon utilisateur ne peut pas faire d'INSERT dans une table qui possède une séquence.
Je vais donc ajouter le droit : GRANT USAGE on ALL SEQUENCES IN SCHEMA monschema.
La notion USAGE n'est pas claire pour moi. Je lis dans la doc "autorise l'accès aux objets contenus dans le schéma ".
Mon : GRANT USAGE ON SCHEMA monschema TO BASIC_monschema; n'est-il pas suffisant ?
Ok cela fonctionne.
Merci Marc de m'aider à progresser.
Je viens de modifier la précédente réponse pour dire que j'ai également créé le rôle :
CREATE ROLE toto NOINHERIT LOGIN ENCRYPTED PASSWORD 'titi' IN ROLE BASIC_monschema;
excusez-moi.
Bonjour à tous,
J'ai une appli JAVA qui toune en local sur la machine de mon Serveur PostgreSQL.
Cette appli posséde un fichier de configuration où est décrit la connexion à la BD test :
<DATABASE>
<DRIVER>org.postgresql.Driver</DRIVER>
<URL>jdbc:postgresql://localhost:5432/test</URL>
<UID>toto</UID>
<PWD>titi</PWD>
<SCHEMA_GEO>monschema</SCHEMA_GEO>
<SQLSTATE_CONNECTION>S1000</SQLSTATE_CONNECTION>
</DATABASE>
J'ai ajouté à mon fichier pg_hba.conf la ligne suivante :
host test toto 127.0.0.1/32 md5
J'ai créé les rôles et donné les droits suivants :
CREATE ROLE BASIC_monschema NOINHERIT;
GRANT USAGE ON SCHEMA monschema TO BASIC_monschema;
GRANT SELECT ON ALL TABLES IN SCHEMA monschema TO BASIC_monschema;
CREATE ROLE toto NOINHERIT LOGIN ENCRYPTED PASSWORD 'titi' IN ROLE BASIC_monschema;
Lorsque j'exécute l'appli JAVA, j'obtiens le message suivant dans les logs :
127.0.0.1 20829 2011-05-20 12:11:31 CEST PARSE 1 ERROR: permission denied for schema monschema at character 166
127.0.0.1 20829 2011-05-20 12:11:31 CEST PARSE 2 STATEMENT: select id_test,lib_test from monschema.matabletest;
Est-ce que j'ai oublié quelque chose ?
Bonjour à tous,
Je travaille sur des bases supérieures à 8.0 sous Red-Hat et Cent-OS.
Même aprés la lecture de différents chapitres de la Doc, j'ai un peu de mal à mettre en oeuvre la sécurité, à créer les rôles et donner les droits.
Auriez-vous quelques liens vers des Tutos, exemples, ... ?
D'avance merci.
Ok.
Merci Marc pour la réponse et la rapidité.
Je dois donc utiliser les 2 commandes pour pouvoir faire du SELECT ?
Bonjour Marc,
La commande suivante ne donne pas ce droit ?
grant select on all tables in schema test to toto;
Bonjour à tous,
Je travaille sur des bases supérieures à 8.0 sous Red-Hat et Cent-OS.
J'ai créé un nouveau rôle :
CREATE ROLE toto LOGIN ENCRYPTED PASSWORD 'md51a7d25d0b58060552a5061297579e015'
J'ai autorisé ce rôle à se connecter à ma base demo :
host demo toto 19.68.1.45/32 md5
J'ai accorder le droit de faire du SELECT à ce rôle sur le schéma test :
grant select on all tables in schema test to toto;
Je me connecte via PgAdmin, cela fonctionne.
J'essaye de faire un SELECT (select * from test.matable;) et j'obtiens :
ERROR: permission denied for schema test
********** Erreur **********
ERROR: permission denied for schema test
État SQL :42501
Est-ce que j'ai oublié (ou mal compris) quelque chose ?
Merci pour les réponses.
Bonjour à tous,
Je travaille sur des bases supérieures à 8.0 sous Red-Hat et Cent-OS.
Nous travaillons à la sécurisation de nos système.
Plusieurs de nos applicatif se connectent en super-utilisateur (postgres) et utilisent la fonction pg_read_file pour allé lire dans un fichier une valeur SITE qui indique sur quel site l'outil travaille.
Nous avons créé des "utilisateurs applicatifs", en restreignant les droits (delete interdit, select/insert/update uniquement sur certaines tables de certains schémas) et apparemment la fonction pg_read_file ne marche plus.
J'ai lu dans la Doc que "L'utilisation de ces fonctions est restreinte aux superutilisateurs".
Y a t'il un moyen de contourner ce problème ? ou existe t'il une autre fonction utilisable par un simple utilisateur ?
Merci pour les réponses.
D'accord Marc, j'ai mis md5.
Merci pour votre aide.
J'ai mis cette "pseudo" adresse pour l'exemple (j'ai effectivement mis l'adresse IP de mon PC avec le masque correspondant).
Dans le fichier de LOG, j'ai les messages
127.0.0.1 17994 2011-05-09 15:30:23 CEST authentication 1 LOG: could not connect to Ident server at address "127.0.0.1", port 113: Connexion refusée
127.0.0.1 17994 2011-05-09 15:30:23 CEST authentication 2 FATAL: Ident authentication failed for user "postgres"
Marc,
J'ai ajouté la ligne suivante pour me permettre, depuis mon PC (IP pour exemple 199.199.199.199), de travailler avec PgAdmin :
host all postgres 199.199.199.199 255.255.255.0 trust
J'ai également une application JAVA qui tourne en local sur le serveur et qui utilise un fichier de configuration où sont précisés :
<URL>jdbc:postgresql://localhost:5432/test</URL>
<UID>postgres</UID>
<PWD>pwd</PWD>
Ce dernier n'arrive plus à se connecter ?? n'utilise t'il pas la ligne ?
host all postgres 127.0.0.1/32 ident
Ok, Marc, cela fonctionne.
Si j'ai bien compris, la 2ème ligne est pour les connexions distantes ?
Je dois maintenant définir mes Utilisateurs Applicatifs, leur accorder les droits INSERT/UPDATE/DELETE. Puis mettre les adresses IP des postes applicatifs qui auront droit d'accés.
Merci encore pour votre aide.