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 Options Indexes FollowSymLinks Order deny,allow Deny from all Allow from localhost 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