Outils pour utilisateurs

Outils du site


technique:linux:bdd_postgres

Installation/configuration de PostgreSQL

http://www.postgresql.org http://www.postgresqlfr.org/?q=node/view/33 (Tutoriel pour installer PostgreSQL et pgacces sous Mandrake et paramétrer les logiciels pour qu'ils fonctionnent ensemble) Groupes de discussion : http://archives.postgresql.org/pgsql-admin/

Installer le rpm MDK Lors de l'installation du rpm un user “postgres” est créé sans mot de passe (!) avec la configuration suivante :

User: postgres
Home directory: /var/lib/pgsql
Default shell: /bin/bash

Lui assigner un mot de passe avec les commandes sous root : # userdrake (si postgres n'apparaît pas ⇒ menu/Options/Filter system/users) ou # passwd postgres

Lancer postgresql, vérifier si postgresql est lancé :


# service postgresql status postmaster (pid 4037 4036 4032) is running…

Lancer (start) ou relancer (restart) # service postgresql restart

                                                              [  OK  ]

Starting postgresql service: [ OK ]

Ou bien : # /etc/rc.d/init.d/postgresql start

Autre possibilité (cf. pg_ctl –help) pg_ctl start -D /var/lib/pgsql/data

NB : pour autoriser l'accès au serveur via le réseau (localhost y compris) 2 possibilités : - mettre tcpip_socket = true dans /var/lib/pgsql/data/postgresql.conf - ou bien rajouter l'option -i à pg_ctl.

Sécuriser le compte postgres


Par défaut postgres n'a pas de mot de passe non plus au niveau de la base. Pour créer ce mot de passe : # psql template1 postgres … template1=# SELECT * from pg_shadow ; … template1=# UPDATE pg_shadow SET passwd = 'mon_mdp';

Pour voir si le mdp a bien été entré : template1=# select * from pg_shadow; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ———-+———-+————-+———-+———–+———+———-+———– postgres | 1 | t | t | t | mon_mdp | | toto | 1 | t | t | t | mon_mdp | |

Attention : cette commande met tous les mots de passe à la même valeur ! Utiliser plutôt : template1=# ALTER USER toto WITH PASSWORD 'fifi' ; et vérifier : template1=# SELECT * from pg_shadow WHERE usename = 'toto';

Pour que le mot de passe soit inséré (et apparaisse) crypté et non pas en clair, ouvrir /var/lib/pgsql/data/postgresql.conf et dans : # - Security & Authentication - mettre : password_encryption = true puis relancer postgresql

Aide en ligne psql : \h \h commande

Pour quitter psql : template1=# \q;

Créer un utilisateur


su postgres createuser MonNom Attention : le mot de passe demandé est celui de postgres dans la BD et non pas le mot de passe de l'utilisateur unix postgres. createuser ne permet pas non plus d'affecter un mot de passe au nouvel utilisateur. Pour lui créer un mot de passe : $ psql template1 -U postgres template1=# ALTER USER MonNom WITH PASSWORD 'MonMotdePass' ; et pour vérifier : template1=# SELECT USER MonNomU from pg_shadow ;

Vérifier où MDK a installé les fichiers de configuration de postgresql


# find / -name pg_hba.* /usr/share/pgsql/pg_hba.conf.sample /var/lib/pgsql/data/pg_hba.conf

⇒ les fichiers de configuration sont dans /var/lib/psql/data

Ou bien installer Posgresql à partir des sources Récupérer les sources sur http://www.postgresql.org/ Les décompresser : # tar -zxvf postgresql-xxx.tar.gz Les possesseurs et groupes des fichiers sont rpc:rpc !? # chown -Rv root:root postgresql-xxx.tar.gz

L'installation est très bien expliquée dans le fichier INSTALL : ./configure gmake su gmake install adduser postgres mkdir /usr/local/pgsql/data chown postgres /usr/local/pgsql/data su - postgres /usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data /usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data >logfile 2>&1 & /usr/local/pgsql/bin/createdb test /usr/local/pgsql/bin/psql test

Ici le programme s'installe dans /usr/local/pgsql /var/lib/pgsql/

Pour pouvoir démarrer et stopper le serveur avec la commande “service postgresql”, récupérer dans les sources le script “linux.sh”. Il permet aussi de lancer automatiquement Postgresql au démarrage du PC et l'arrêter lors de l'arrêt du PC. Ce script est situé dans le répertoire :contrib/start-scripts, a partir de la racine de l'archive. Placer ce fichier dans /etc/init.d/, le renommer “postgresql”. Consulter la doc très claire, contenue dans le script, pour le configurer correctement.

Configurer postgresql *

Fichier /var/lib/pgsql/data/pg_hba.conf (“postgresql host-based authentication”)


cf.http://www.postgresql.org/docs/7.3/static/client-authentication.html Pour commencer mettre des autorisations assez permissives, par exemple : # TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD local all all trust host all all 127.0.0.1 255.255.255.255 trust

ce qui signifie :

accès : local (à partir du PC) ou host (à partir du réseau, y compris localhost) 
bases de données : all = accès à toutes les bases de données
utilisateurs : all = tous
méthode d'identification :
	trust : accepte tout utilisateur sans mot de passe

Puis limiter l'accès au strict minimum nécessaire, par exemple : local all truc, postgres md5 host all truc, postgres 127.0.0.1, machine.fr 255.255.255.255 md5

soit accès permis seulement aux utilisateurs “truc” et “postgres” en local ou par réseau (localhost et machine.fr uniquement), avec mot de passe obligatoire crypté md5.

Fichier /var/lib/pgsql/data/postgresql.conf


tcpip_socket = true port = 5432 (ou un autre port de son choix)

Après ces changements de configuration, ne pas oublier de faire la mise à jour par : postgresql start (ou restart) Ou bien :

pg_ctl reload

ou en cas d'erreur “pg_ctl: no database directory specified and environment variable PGDATA unset”

pg_ctl -D /var/lib/pgsql/data -l logfile reload

Quelques commandes ** Trouver le n° de version


$ psql –version

Créer une base de données “test”


$ createdb test

Lister les BD disponibles


$ psql -U NomUtilisateur -l

Installation de phpPgAdmin

Installer le rpm fourni par Mandrake est sans intérêt : préférer la dernière version disponible sur : http://phppgadmin.sourceforge.net/ actuellement : phpPgAdmin-3.5.1.tar.bz2

Décompresser : $ tar -jxvf phpPgAdmin-3.5.1.tar.bz2 Déplacer le répertoire créé (phpPgAdmin) vers un endroit acceptable quelconque : par exemple le rpm Mandrake installe phpPgAdmin dans la racine du serveur apache : /var/www/html/admin/phpPgAdmin Si on l'a installé de cette façon, on le lancera donc par : http://localhost/admin/phpPgAdmin

Dans le cas où on l'a installé “à la main” par exemple dans /installe/admin, ajouter dans la config de Apache (/etc/httpd/conf/commonhttpd.conf) :

Alias /toto /installe/admin/phpPgAdmin

<Directory /installe/admin/phpPgAdmin>

  Options Indexes FollowSymLinks
 <IfModule mod_access.c>
    Order deny,allow
    Deny from all
    Allow from localhost
 </IfModule>

</Directory>

S'y connecter avec : http://localhost/toto Rajouter si nécessaire après “Allow from” les machines autorisées à se connecter en plus de localhost :

Allow from localhost 192.168.1.23 monpc.fr
technique/linux/bdd_postgres.txt · Dernière modification : 2020/04/06 15:38 de 127.0.0.1