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

#301 Re : Sécurité » Mise en place de la sécurité » 09/05/2011 10:23:51

Marc,

J'ai modifié le pg_hba.conf avec les 2 lignes que vous avez donné.

Dans les logs, j'ai ceci :

3602 2011-05-09 10:22:01 CEST  46 LOG:  received SIGHUP, reloading configuration files
3602 2011-05-09 10:22:01 CEST  47 LOG:  authentication option not in name=value format: sameuser

3602 2011-05-09 10:22:01 CEST  48 CONTEXT:  line 75 of configuration file "/home/postgres/PG_DATA/pg_hba.conf"
3602 2011-05-09 10:22:01 CEST  49 LOG:  authentication option not in name=value format: sameuser

3602 2011-05-09 10:22:01 CEST  50 CONTEXT:  line 76 of configuration file "/home/postgres/PG_DATA/pg_hba.conf"
3602 2011-05-09 10:22:01 CEST  51 WARNING:  pg_hba.conf not reloaded

#302 Re : Sécurité » Mise en place de la sécurité » 09/05/2011 10:12:27

J'ai trouvé la commande pour enlever le mot de passe :
          ALTER ROLE postgres WITH PASSWORD NULL;

Mais il me demande toujours un mot de passe à la connexion et lorsque je ne met rien, j'obtiens le message d'erreur :
          psql: fe_sendauth: no password supplied

Au secours.

#303 Re : Sécurité » Mise en place de la sécurité » 09/05/2011 09:45:14

Bonjour à tous,

Merci Marc pour la réponse, j'ai suivi votre conseil.

J'ai modifié le password de mon Utilisateur Système postgres.

J'ai modifié mon pg_hba.conf (local   all   postgres   ident sameuser) pour tester les connexions locales. J'ai ensuite fait un "pg_ctl reload". La connexion fonctionne.

J'ai mis le même password à mon Utilisateur PostgreSQL postgres, que mon Utilisateur Système, pour voir le comportement.
Maintenant il me demande le password à la connexion (psql [DBNAME]), malgrès le "ident sameuser".
Comment faire pour qu'il ne me demande pas ce password ? ou quelle est la commande pour l'enlever ?

Merci pour votre aide.

#304 Re : Général » Out Of Memory » 06/05/2011 15:00:04

Rebonjour,

Je me permets de faire remonter ce post pour vous dire que j'ai modifié le paramètrage mémoire du moteur PostgreSQL et que maintenant les tâches de maintenance se déroulent sans problème.

     shared_buffers = 50000
     work_mem = 10240
     maintenance_work_mem = 262144   

Merci pour votre aide.

#305 Sécurité » Mise en place de la sécurité » 06/05/2011 14:50:23

mortimer.pw
Réponses : 13

Bonjour à tous,

Je travaille sur des bases supérieures à 8.0 sous Red-Hat et Cent-OS.

L'installation est faite avec un Utillisateur Système "postgres"
Le fichier postgresql.conf contient le paramètre : listen_addresses = '*'
Le fichier pg_hba.conf est configuré :
     local   all     all     trust
     host    all     all     IP     MASK     trust
     host    all     all     ::1/128     trust

Est-ce que tout le contenu de la BD appartient à ce "Super-Utilisateur" PostgreSQL de même nom que l'Utilisateur Système ?
Ce "Super-Utilisateur" PostgreSQL a t'il un mot de passe ? Est-ce le même que celui de l'Utilisateur Système ?

Pour mettre en place la sécurité, nous souhaitons :
    - changer le mot de passe du "Super-Utilisateur" que tout le monde connait à présent.
        Est-ce possible ? et quel impact ?
    - créer de nouveaux utilisateurs PostgreSQL en adéquation avec nos applicatifs.
            Faut-il utiliser les commandes CREATE ROLE ?
            Y-a-t'il des GRANT à faire pour que ces utilisateurs puissent faire des insert/update/delete ?
    - restreindre l'accés à la base de données à certains postes clients uniquement.
            Est-ce bien au niveau du pg_hba.conf qu'il faut donner la liste des postes, avec nom de base de données et password ?
    - restreindre les actions dans la base de données (accés à certaines tables, delete interdit sur certaines tables, ...).
            Est-ce que cela se gère également avec les GRANT ?

Globalement est-ce une bonne première approche pour gérer la sécurité ?

Je sais cela fait beaucoup de questions, mais nous n'avions, jusqu'à aujourd'hui, aucun besoin de sécurité.
J'ai déjà pas mal lu de documentation PostgreSQL, si vous voulez bien juste m'aiguiller.
Je vous remercie par avance.

#306 Re : Général » Out Of Memory » 07/04/2011 14:52:27

Ok effectivement les paramètres sont loin d'être ceux préconisé dans l'article de LinuxMag 131 que j'ai lu.
Je vais planifier un arrêt/modification des paramètres/redémarrage du serveur.
Je vous ferai part des résultat aprés modif et exécution du script posant problème.
Merci pour votre aide.

#307 Re : Général » Out Of Memory » 07/04/2011 14:03:11

Bonjour Guillaume,

Les valeurs des paramètres sont :
     shared_buffers=50000
     work_mem=1024000
     maintenance_work_mem=1024000
     max_connections=100

Oui le serveur est dédié à PostgreSQL.

Merci pour votre aide.

#308 Général » Out Of Memory » 07/04/2011 10:44:11

mortimer.pw
Réponses : 16

Bonjour à tous,

J'ai une BD de production en PostgreSQL 8.1.2 sous White Box 4.

Je rencontre le message d'erreur ci-dessous lors de l'exécution d'un script qui effectue les tâches suivantes :
     vacuumdb -a -f -z
     reindexdb -a
     reindexdb -s


2011-04-03 12:48:51 CSTERROR:  out of memory
2011-04-03 12:48:51 CSTDETAIL:  Failed on request of size 67108864.
2011-04-03 12:48:51 CSTSTATEMENT:  REINDEX DATABASE geo;

La machine dispose de :
     MemTotal:      2075012 kB   (grep MemTotal /proc/meminfo)
     SwapTotal:     4096564 kB   (grep SwapTotal /proc/meminfo)

Quelle peut être la source du problème ?

Merci pour vos réponses.

#309 Re : Général » Déconnecter un utilisateur » 04/02/2011 13:34:51

Vous avez raison, ce peut être dangereux.
Par contre, je suis certains que personne n'est connecté.
A moins que les applis java ne laissent des connexions ouvertes mais quand je quitte. Est-ce possible ?
De plus, ce sont des connexions locales, puisque j'ai "127.0.0.1" comme IP ?

#310 Re : Général » Déconnecter un utilisateur » 04/02/2011 12:42:02

Excusez-moi Guillaume, mais le jour où je passe en production, je ne peux certainement pas redémarrer.
Comment peut-il rester des connexions ouvertes ?
N'y a t'il pas un moyen de les fermer automatiquement (par exemple aprés plusieurs heures) ?
Le fait d'avoir des connexions qui restent ouvertes peut-il dégrader les performances ?
Merci.

#311 Re : Général » Déconnecter un utilisateur » 04/02/2011 09:46:27

Bonjour Guillaume,

Super, j'ai testé et déconnecté mon pgadmin, cela fonctionne, merci.

Concernant la commande PS de départ, je suis seul à utiliser la machine, les 2 seules appli java qui utilise le serveur sont arrêtées, les lignes suivantes sont-elles normales ?

postgres 12053  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(44356) idle
postgres 12056  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(44358) idle
postgres 12218  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53493) idle
postgres 12219  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53494) idle
postgres 12221  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53496) idle

Merci pour votre aide.

#312 Général » Déconnecter un utilisateur » 03/02/2011 13:20:03

mortimer.pw
Réponses : 7

Bonjour à tous,

Je travaille sur une machine de test, en version 8.4.2 sous Red Hat 5.
Je suis en cours de lecture du livre "Admin Cookbook", je suis sur le sujet qui parle de déconnecter un utilisateur.
Je fais des éssais avec pg_terminate_backend() et pg_stat_activity mais je n'arrive pas au bon résultat.


Je me connecte, depuis mon PC XP, sur le serveur et je commence par faire un ps -ef | grep postgres

postgres  2604     1  0 Jan28 ?        00:00:01 /usr/local/pgsql/bin/postmaster -D /home/postgres/PG_DATA
postgres  2606  2604  0 Jan28 ?        00:00:00 postgres: logger process
postgres  2608  2604  0 Jan28 ?        00:00:00 postgres: writer process
postgres  2609  2604  0 Jan28 ?        00:00:00 postgres: wal writer process
postgres  2610  2604  0 Jan28 ?        00:00:00 postgres: autovacuum launcher process
postgres  2611  2604  0 Jan28 ?        00:00:01 postgres: stats collector process
postgres 12053  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(44356) idle
postgres 12056  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(44358) idle
postgres 12218  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53493) idle
postgres 12219  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53494) idle
postgres 12221  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53496) idle
root     19381  2450  0 11:24 ?        00:00:00 sshd: postgres [priv]
postgres 19384 19381  0 11:24 ?        00:00:00 sshd: postgres@pts/1
postgres 19385 19384  0 11:24 pts/1    00:00:00 -bash
postgres 20625 19385  0 12:07 pts/1    00:00:00 ps -ef
postgres 20626 19385  0 12:07 pts/1    00:00:00 grep postgres

Est-il normale de voir autant de chose ?


Ensuite, je lance, depuis mon PC, PgAdmin et je me connecte à une base du serveur, et je relance la commande ps -ef | grep postgres (j'ai remplacé mon adresse IP par [MON IP])

postgres  2604     1  0 Jan28 ?        00:00:01 /usr/local/pgsql/bin/postmaster -D /home/postgres/PG_DATA
postgres  2606  2604  0 Jan28 ?        00:00:00 postgres: logger process
postgres  2608  2604  0 Jan28 ?        00:00:00 postgres: writer process
postgres  2609  2604  0 Jan28 ?        00:00:00 postgres: wal writer process
postgres  2610  2604  0 Jan28 ?        00:00:00 postgres: autovacuum launcher process
postgres  2611  2604  0 Jan28 ?        00:00:01 postgres: stats collector process
postgres 12053  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(44356) idle
postgres 12056  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(44358) idle
postgres 12218  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53493) idle
postgres 12219  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53494) idle
postgres 12221  2604  0 Feb02 ?        00:00:00 postgres: postgres geo 127.0.0.1(53496) idle
root     19381  2450  0 11:24 ?        00:00:00 sshd: postgres [priv]
postgres 19384 19381  0 11:24 ?        00:00:00 sshd: postgres@pts/1
postgres 19385 19384  0 11:24 pts/1    00:00:00 -bash
postgres 20739  2604  0 12:11 ?        00:00:00 postgres: postgres postgres [MON IP](1621) idle
postgres 20740  2604  1 12:11 ?        00:00:00 postgres: postgres geo [MON IP](1622) idle
postgres 20741 19385  0 12:11 pts/1    00:00:00 ps -ef
postgres 20742 19385  0 12:11 pts/1    00:00:00 grep postgres


Je me connecte via psql et je fais un select * from pg_stat_activity;

datid | datname  | procpid | usesysid | usename  |          current_query          | waiting |          xact_start           |          query
_start          |         backend_start         |  client_addr   | client_port
-------+----------+---------+----------+----------+---------------------------------+---------+-------------------------------+---------------
----------------+-------------------------------+----------------+-------------
11564 | postgres |   20739 |       10 | postgres | <IDLE>                          | f       |                               | 2011-02-03 12:
11:41.487737+01 | 2011-02-03 12:11:41.219511+01 | [MON IP] |        1621
22662 | mabase      |   20740 |       10 | postgres | <IDLE>                          | f       |                               | 2011-02-03 12:
11:41.450619+01 | 2011-02-03 12:11:41.247088+01 | [MON IP] |        1622
22662 | mabase      |   20790 |       10 | postgres | select * from pg_stat_activity; | f       | 2011-02-03 12:13:59.239447+01 | 2011-02-03 12:
13:59.239447+01 | 2011-02-03 12:13:55.288704+01 |                |          -1
22662 | mabase      |   12053 |       10 | postgres | <IDLE>                          | f       |                               | 2011-02-02 11:
43:35.830329+01 | 2011-02-02 11:20:21.923329+01 | 127.0.0.1      |       44356
22662 | mabase      |   12056 |       10 | postgres | <IDLE>                          | f       |                               | 2011-02-02 12:
26:11.561325+01 | 2011-02-02 11:20:52.91473+01  | 127.0.0.1      |       44358
22662 | mabase      |   12218 |       10 | postgres | <IDLE>                          | f       |                               | 2011-02-02 11:
27:01.674583+01 | 2011-02-02 11:27:01.659435+01 | 127.0.0.1      |       53493
22662 | mabase      |   12219 |       10 | postgres | <IDLE>                          | f       |                               | 2011-02-02 11:
27:09.920393+01 | 2011-02-02 11:27:09.905238+01 | 127.0.0.1      |       53494
22662 | mabase      |   12221 |       10 | postgres | <IDLE>                          | f       |                               | 2011-02-02 12:
26:16.187483+01 | 2011-02-02 11:27:16.823725+01 | 127.0.0.1      |       53496
(8 rows)

Comment faire pour déconnecter mon PgAdmin ?

J'espère être clair, merci pour les réponses.

#313 Re : PL/pgSQL » Date du premier jour correspond à N° de semaine donné en paramètre » 08/12/2010 17:00:06

Super.

Vraiment trés court et puissant.

J'ai tout de même besoin d'une fonction car utilisé dans du PHP.

Merci encore.

#314 Re : PL/pgSQL » Date du premier jour correspond à N° de semaine donné en paramètre » 08/12/2010 13:35:37

Marc,

Je pense que tu veux dire semaine et non pas mois ?
En paramètre, il s'agit du N° de semaine dans l'année, par exemple nous sommes en semaine 49 de l'année 2010, donc 1049.
Tu me conseille donc de prendre 2 paramètres (Année, N°semaine) pour éviter le découpage dans la fonction ?
Merci pour ton aide.

#316 Re : PL/pgSQL » Date du premier jour correspond à N° de semaine donné en paramètre » 08/12/2010 13:00:02

Bonjour,

Merci pour la réponse.

A force de chercher, j'ai écrit ceci :

SELECT to_char(to_date(substr(to_char(current_date,''YYYY''),1,2)||SUBSTR($1,1,2)||''-''||SUBSTR($1,3,2)||''-1'', ''IYYY-IW-ID''),''YYYYMMDD'');

En entrée, je prends un N° de semaine au format YYWW, par exemple nous sommes en semaine 49 de l'année 2010, donc 1049.

J'ai fait plusieurs tests, cela semble fonctionner.

#317 PL/pgSQL » Date du premier jour correspond à N° de semaine donné en paramètre » 07/12/2010 13:44:51

mortimer.pw
Réponses : 13

Bonjour à tous,

Je travaille sur une base 8.4 sous CentOS.

Je souhaite écrire une fonction qui :
     prend en paramètre un N° de semaine
     retour la date correspondant au 1er jour (lundi) de cette semaine.

J'ai trouvé la fonction pour calculer un N° de semaine à partir d'une date:
     SELECT EXTRACT(week FROM $1::date)::integer INTO nNoSem;

Mais je ne sais pas comment retourner la date du lundi de cette semaine.

Merci pour votre aide.

#319 Re : PL/pgSQL » Compter le nombre de lignes updatées » 01/12/2010 11:43:29

Bonjour Marc,
Merci pour la rapidité de la réponse.
Je suis dans un bloc Pl/PgSQL.

#320 PL/pgSQL » Compter le nombre de lignes updatées » 01/12/2010 11:35:50

mortimer.pw
Réponses : 4

Bonjour,
Je travaille sur une 8.4.2 sous linux.
Est-il possible de récupérer le nombre de lignes mises à jour par une commande UPDATE ?
Merci pour les réponses.

#321 Général » "Variable d'environnement" stockée dans Grappe ou base de données » 08/09/2010 13:47:07

mortimer.pw
Réponses : 3

Bonjour à tous,

Je travail sur une 8.4.2 sous Cent-OS 5.

Je cherche s'il est possible de définir "une variable d'environnement" dans une grappe de bases de données ou dans une base de données ?

Par exemple, j'installe des serveurs sur différents sites et je veux stocker le nom du site dans la grappe ou dans la base de données.

Pouvez-vous orienter mes recherches ?

Merci pour les réponses.

#322 Re : Général » Syntaxe de déclaration d'une Vue » 13/07/2010 17:33:08

Bonjour Guillaume,

Merci pour la réponse.

Question 1 : c'est au niveau syntaxique que je me pose la question. Y-a-t'il une autre façon, peut être plus propre, d'écrire cette suite de CASE ?

Question 2 : Non aucun problème (jusqu'à présent, je suis en test). Je veux savoir si au niveau de la déclaration de la Vue je pourrai être limité sur la longueur de la valeur que je veux faire rentrer dans j_delete, j_insert et j_update ?

#323 Général » Syntaxe de déclaration d'une Vue » 13/07/2010 16:58:57

mortimer.pw
Réponses : 3

Bonjour,

Je travaille sur une BD 8.4 sous Cent-OS 5.2.


J'ai créé une Vue qui doit contenir des infos pour faire de la mise à jour sur une table "journalisée" :

CREATE OR REPLACE VIEW sch2.vue_action AS
SELECT
        CASE
            WHEN act.id_action IS NULL THEN 'D'::text
            ELSE 'I'::text
        END AS j_flag, journal.ets, journal.j_date,
        CASE
            WHEN act.id_action IS NULL THEN ((('delete from sch1.action where id_action='::text || chr(39)) || journal.id_action::text) || chr(39)) || ';'::text
            ELSE NULL::text
        END AS j_delete,
        CASE
            WHEN act.id_action IS NULL THEN NULL::text
            ELSE ((((((('insert into sch1.action values('::text || chr(39)) || journal.id_action::text) || chr(39)) || ','::text) || chr(39)) || act.libelle::text) || chr(39)) || ');'::text
        END AS j_insert,
        CASE
            WHEN act.id_action IS NULL THEN NULL::text
            ELSE ((((((('update sch1.action set libelle='::text || chr(39)) || act.libelle::text) || chr(39)) || ' where id_action='::text) || chr(39)) || journal.id_action::text) || chr(39)) || ';'::text
        END AS j_update
   FROM ( SELECT jour_action.ets, jour_action.id_action, max(jour_action.j_date) AS j_date
           FROM sch2.j_action jour_action
          WHERE jour_action.j_consumed::text = '1'::text
          GROUP BY jour_action.ets, jour_action.id_action) journal
   LEFT JOIN action act ON journal.id_action::text = act.id_action::text;


J'ai deux questions :
          - Y-a-t'il une meilleure solution que d'imbriquer des CASE ?
          - Y-a-t'il une limite à la longueur de la valeur que je retourne dans les CASE (delete from ...., insert into ...., update .... ?

J'espère être clair.

Merci pour vos réponses.

#324 Re : PL/pgSQL » Fonction avec paramètre OUT » 09/07/2010 11:12:29

Super réactivité
Merci Marc et bon week-end.

#325 Re : PL/pgSQL » Fonction avec paramètre OUT » 09/07/2010 11:03:22

Rebonjour,
Dans le cas du RECORD, comment exploiter les valeurs en retour de Fonction ?
Merci.

Pied de page des forums

Propulsé par FluxBB