Si l’installation de PostgreSQL n’a pas été réalisée lors de la mise en place du système, il sera nécessaire d’installer manuellement les différents paquetages avec la commande :
rpm -ivh <paquets>
La liste des packetages installés sur le serveur ird-us025 est la suivante :
[ird-us025-jgrelet:]/data>
$ rpm -qa|grep postgre
postgresql-server-7.3.4-11
postgresql-jdbc-7.3.4-11
postgresql-devel-7.3.4-11
postgresql-tcl-7.3.4-11
postgresql-contrib-7.3.4-11
postgresql-libs-7.3.4-11
postgresql-7.3.4-11
postgresql-pl-7.3.4-11
[ird-us025-jgrelet:]/data>
$ rpm -qa|grep DB
perl-DBI-1.37-1
unixODBC-2.2.5-9
perl-DBD-Pg-1.22-1
Pour connaître la liste des paquetages installés :
$ rpm -ql <nom_du_paquet>
exemple :
$ rpm -ql postgresql-7.3.4-11
/usr/bin/clusterdb
/usr/bin/createdb
...
L’installation va créer un lien symbolique /etc/rc3.d/S85postgresql
vers le script de démmarrage se trouvant sous /etc/rc.d/init.d/postgresql
, ce qui permet d’assurer un démarrage automatique du serveur lorsque l’on reboote la machine.
Comme pour les autres démons, on peut démarrer ou arreter le serveur en étant root par la commande :
# /etc/rc.d/init.d/postgresql {start | stop }
ou mieux :
# /sbin/service postgresql {start | stop }
La documentation est installée dans le répertoire /usr/share/doc/postgresql-7.3.4
et est également accessible en ligne sur l’intranet comme l’ensemble des autres documentations utiles à l’US025.
On vérifiera que le programme fonctionne en arrière plan :
ps aux |grep postgres
Le processus suivant appartient à l’utilisateur postgres est en exécution :
postgres 4426 /usr/bin/postmaster -p 5432
Le processus d’installation à créé une arborescence sous
Sous l’utilisateur postgres ou root, éditer le fichier de configuration /var/lib/pgsql/data/postgresql.conf
et autoriser les connections par le réseau au serveur :
tcpip_socket = true
Vérifier également l’initialisation des variables locales comme :
timezone = UTC
#
# Locale settings
#
# (initialized by initdb -- may be changed)
LC_MESSAGES = 'fr_FR.UTF-8'
LC_MONETARY = 'fr_FR.UTF-8'
LC_NUMERIC = 'fr_FR.UTF-8'
LC_TIME = 'fr_FR.UTF-8'
Editer également le fichier pg_hba.conf
pour modifier ou ajouter/restreindre les autorisations d’accés au travers du réseau en fonction des contraintes liées à la sécurité.
Par défaut, seules les sockets Unix sont activés. Cette autorisation peut également être activées en spécifiant l’option -i
au programme /usr/bin/postmaster
ou avec l’option -0 -i
du script /usr/bin/pg_ctl
Exemple :
/usr/bin/pg_ctl -o -i -D /var/lib/pgsql/data -l logfile start
su -l pgsql -c initdb
On se consultera les pages man et autres fichiers README, INSTALL car les procédures de démarrage varient quelque peu d’une version/distribution à une autre.
Tester le fonctionnement du serveur en se connectant avec le client psql.
$ su -l postgres
Password:
-bash-2.05b$ psql -d template1
Welcome to psql 7.3.4-RH, the PostgreSQL interactive terminal.
Type: \copyright for distribution terms
\h for help with SQL commands
\? for help on internal slash commands
\g or terminate with semicolon to execute query
\q to quit
template1=#
Pour utiliser le langage procédural plpgsql, il est nécessaire de configurer PostgreSQL avec la commande suivante :
createlang plpgsql template1
Voir le lien suivant pour plus d’informations.
Pour créer des bases de données vides ou des utilisateurs on utilisera les scripts fournit avec PostgreSQL :
$ createdb <database>
en étant root
# createdb -U pgsql <database>
Il est plus simple de créer une base vide pour l’utilisateur
Il devra ensuite se connecter à sa base avec \c sous psql ou avec des outils graphiques gratuits comme pgadmin3.
Pour plus d’informations sur les commandes, utiliser l’option help :
# createdb --help
$ dropdb <database>
$ pg_dump -f <file> <dbname> # utilise copy
$ pg_dump -d -f <file> <dbname> # utilise insert
$ pg_dump -C -f <file> <dbname> # met l'instruction createdb
$ pg_dump -C -f you_base_dump-11052004.sql your_base
$ pg_dumpall -h localhost -U <user> -c > file.sql
Le format de stockage interne des données sous PostgreSQL ayant changé entre les versions 7.1.x, 7.2.x, 7.3.x et 7.4.x il est nécessaire de sauvegarder l’intégralité des données de la base avant toute mise à jour (upgrade) majeur du service.
Pour cela, réaliser une sauvegarde globale de la base (backup) avec pg_dumpall :
$ cd /your_path_for_backup
$ pg_dumpall -h localhost -U <user> -c > outfile.sql
Arreter PostgreSQL avec la commande service ou kill :
# kill -INT `cat /usr/local/pgsql/data/postmaster.pid | sed 1q`
ou
# /etc/rc.d/init.d/postgresql stop
ou
# /sbin/service postgresql stop
Même si on installe le service au même emplacement, il est préférable par précaution, de déplacer le répertoire de la base :
# mv /var/lib/pgsql /usr/local/pgsql.old
Mettre à jour PostgreSQL avec la commande rpm ou yum si vous installez directement les binaires :
# yum update postgres*
Lors de l’installation, le paquetage postgresql-server-7.4.2-1 va créer un nouveau répertoire pour le compte postgres contenant :
/var/lib/pgsql
/var/lib/pgsql/.bash_profile
/var/lib/pgsql/backups
/var/lib/pgsql/data
Si vous désirez changer l’emplacement des fichiers de la base, il faudra déplacer ce répertoire de /var/lib/pgsql vers /usr/local/pgsql par exemple.
Ne pas oublier de modifier le répertoire de l’utilisateur postgres dans le fichier /etc/passwd.
Créer le fichier /etc/sysconfig/pgsql/postgresql
qui contiendra
PGDATA=/usr/local/pgsql/data
Le script de démarrage du serveur /etc/init.d/posgresql
utilisera alors cette variable PGDATA.
Ensuite ouvrir une session sous le compte posgres, vérifier l’emplacement et les droits avec les commandes pwd et ls -la puis initialiser la base en démarrant le service.
# /sbin/service postgresql start
Une fois que le service fonctionne correctement, vérifier qu’il tourne correctement et utilise le bon répertoire :
\ps aux|grep postgres
... 0:00 /usr/bin/postmaster -p 5432 -D /usr/local/pgsql/data
puis modifier la configuration du serveur et les autorisations d’accès en éditant les fichiers :
/usr/local/pgsql/data/pg_hba.conf
/usr/local/pgsql/data/postgresql.conf
Démarrer le serveur, vérifier son fonctionnement avec un client psql (en local puis en réseau depuis un autre client), puis restaurer la sauvegarde :
$ cd /your_path_for_backup
$ psql -d template1 -f outfile.sql
Normalement, c’est gagné si tout c’est bien passé.
Voir également, la documentation officielle de PostgreSQL.
Lire également les fichiers README sous /usr/share/doc/postgresql-7.4.2
L’interface de SGBD Perl (Perl Database Interface - DBI) est une interface logicielle d’accès à un SGBD (Application Programming Interface - API) pour le langage PERL.
Les spécifications de l’API DBI perl définissent un ensemble de fonctions, de variables et de conventions d’accès à un SGDB cohérent et indépendant du SGBD utilisé.
Pour utiliser l’API Perl DBI, installer au préalable les modules suivants :
$ perl -MCPAN -e 'install DBI'
$ perl -MCPAN -e 'install DBD::Pg'
bonjour
j ai j’installé linux mandrake 9.2 avec postgres
mais a chaque createdb que je réalise il me met psql fatal user "root" do not exist
meme avec la commande que vous donnez
je n’arrive pas a creer un utilisateur
pour ensuite créer ma base
pouvez vous m’aidez
merci d’avance
H MOAL
ATMB
PLOUGASTEL
atmb-europe.com
Vous essayer certainement de créer une base en etant root. L’utilisateur root n’existe pas pour Postgresql. La premiere fois, vous ne pouvez le faire que sous l’utilisateur par defaut de Postgresql (pgsql pour Fedora, à voir quel est le propriétaire de postgresql avec la Mandriva ?).
Pour cela, soit se logguer sous psql et créer la base, ou en etant root, le faire avec l’option -U :
# createdb -U pgsql
Utilisez également la commande createuser pour vous autoriser les droits d’utilisateur sous Postgresql (voir doc). La gestion des utilisateurs et droits n’est pas la même pour le système et la base
ben nous ça ne marche pas, on a un fichier de sauvegarde qui s’appele sauvegarde.sql et qui normalement doit nous reconstituer notre base de donnée postgress structure et données mais quand on fait
psql -f sauvegarde.sql
on a permission non accordée
si vous avez une idée
merci d’avance
Sous quel utilisateur lancez vous psql ?
Taper psql —help pour la liste des options, votre commande devrait ressembler a qq chose comme :
$ psql -h