II - Installation - bienvenue sur le serveur d

publicité
Licence Professionnelle
Administrateur des Bases de données
Université Ibn Tofail
Kénitra
PostgreSQL
Installation et exploitation
sous Linux
Réalise par :
Khalid ALLILI
Noureddine EL FIZAZI
Année Univérsitaire
2006 - 2007
Plan d’exposé
I - Présentation :
1 - Définition.
2 - Historique.
3 - Architecture.
II - Installation :
1 - Pré-requis
2 - Super utilisateur
3 - Préparation de l’installation
4 - Compilation et installation
5 - Configuration système
6 - Initialisation
7 - Service Postgres
8 - Démarrage
III - Exploitation :
1 - Concepts de base
2 - Cas pratique
I - Présentation
I - Présentation
1 - Définition
PostgreSQL est un SGBD objet Relationnel OpenSource, Multi-platformes.
Développé à l'université de Californie au département des sciences
informatiques de Berkeley.
Il supporte une grande partie du standard SQL :
Requêtes complexes.
Clés étrangères.
Déclencheurs (triggers).
Vues.
Intégrité des transactions.
I - Présentation
1 - Définition
PostgreSQL est extensible par l'utilisateur après l’adoption du SQL3. En
ajoutant, par exemple, des :
Nouveaux types de données ;
Nouvelles fonctions ;
Nouveaux opérateurs ;
Nouvelles fonctions d'agrégat ;
Nouvelles méthodes d'indexage ;
Nouveaux langages de procédure.
I - Présentation
2 - Historique
PostgreSQL est un projet d'origine universitaire :
Université de Californie (Berkeley)
Développement 1977-1985
Le projet n'est pas libre dans les premières années :
Une première version commerciale donne naissance à Ingres (1985).
Le projet continue à Berkeley sous le nom de Postgre (Post-Ingre).
Naissance de PostgreSQL : En 1995 les étudiants apportent le support
de SQL
Le code est libre depuis en 1996.
I - Présentation
2 - Historique
Postgres95 1.0 1994-1996 : SQL (Andrew Yu, Jolly Chen)
PostgreSQL 6.0 1997-1999 : union. . . PL/pgSQL
PostgreSQL 7.0 2000 : intégrités réferentielles
PostgreSQL 7.1 2001 : jointure externe
PostgreSQL 7.4 2003 : information schéma
PostgreSQL 8.0 2004 : tablespace
PostgreSQL 8.1 2005 : Rôles
PostgreSQL 8.2 2006 : performances. . .
I - Présentation
3 - Architecture
PostgreSQL utilise un modèle client-serveur : "un processus par utilisateur".
User Application
LIBPQ
Client Host
Postmaster
Server (Postgres)
Server Host
Une session PostgreSQL consiste en plusieurs processus coopérants:
un processus démon superviseur (postmaster)
L'application utilisateur (p.ex. le programme PSQL, PGAdmin3)
le serveur de base de données (processus Postgres)
I - Présentation
3 - Architecture
User Application
LIBPQ
Client Host
Postmaster
Server (Postgres)
Server Host
Les applications Client qui veulent accéder à la base de données font appel
à la librairie.
Cette librairie envoie la requête de l'utilisateur à travers le réseau vers le
Postmaster.
Le Postmaster démarre un nouveau processus serveur (un processus par
utilisateur) et connecte ce processus au processus de l'application client.
A partir de ce moment, les processus client et Serveur communiquent sans
intervention du Postmaster.
II - Installation
II - Installation
1 - Pré-requis
La version utilisée est : postgresql-8.2.3
Téléchargement : ftp://ftp.fr.postgresql.org/source/v8.2.3/
Il existe diffères types d'installation (code source, rpm, deb, mdk …)
L’utilité de l'installation à partir des codes sources réside dans le fait quelle
marche dans les différentes distributions et de bien contrôler les
paramètres de l'installation.
Chemins :
Répertoire contenant les sources : /opt/sources/
Repertoire d'instalation : /usr/local/ (par défaut)
Vous pouvez utiliser le chemin que vous voulez.
II - Installation
1 - Pré-requis
Étapes d’installation :
Préparation
Compilation
Installation
Des erreurs peuvent être engendré pendant la préparation et la
compilation, en raison des dépendance des bibliothèques.
gcc / g++ : Compilateur C de GNU
libreadline : bibliothèque qui permet d’avoir accès à l’historique de
requête dans le moniteur interactif psql.
zlib : bibiothèque nécessaire pour la création d’archives lors de la
sauvegardes de bases de données en archive tar ou compressées.
Il faut se loger en « root » pour avoir le droit d’installer des programmes.
II - Installation
2 - Super utilisateur
Pourqoui le super utilisateur :
Pour des raisons de sécurité, il est conseillé de créer un
utilisateur « postgres », pour évité tout menace tel que
les attaques des requêtes de type "SQL injection" par le
réseau ou par une mauvaise utilisation d’un simple
utilisateur.
La création de super utilisateur :
$> sudo adduser postgres
II - Installation
3 - Préparation de l’installation
La création d’un répertoire dans la racine /opt :
$> sudo mkdir /opt/sources
Copier le fichier compressé :
$> sudo cp postgresql-8.2.3.tar.gz /opt/sources/
La décompression :
$> cd /opt/sources/
$> tar -zxvf postgresql-8.2.3.tar.gz
z : compresser/décompresser les fichiers à travers le gzip.
x : extraire les fichiers de l’archive.
v : permet d'obtenir une description des fichiers désarchivés.
f : pour désigner l'archive contenant les fichiers (paramètre) .
II - Installation
3 - Préparation de l’installation
Lance la configuration :
$> ./configure
Pour plus d’information tapez :
$> ./configure - - help
Télécharger les bibliothèque nécessaire :
$> sudo aptitude install g++
$> sudo aptitude install libreadline5-dev
$> sudo aptitude install zlibc
$> sudo aptitude install zlibg-dev
Ou bien :
$> sudo aptitude install g++ libreadline5-dev zlibc zlibg-dev
II - Installation
4 - Compilation et installation
Pour compiler :
$> make
Pour voir les erreurs :
$> sudo make - - check
Pour lance l’installation :
$> sudo make install
Postgres sera installer dans le répertoire :
/usr/local/pgsql/
/usr/local/pgsql/bin/ : contient les fichiers binaires (commandes)
/usr/local/pgsql/lib/ : contient les bibliothèques de Postgres
II - Installation
5 - Configuration système
Configuration des variables d’environnements :
$> gedit /etc/profile
Ajouter les lignes suivantes :
# Chemin des bibliothèque Postgres
export LD_LIBRARY_PATH=/usr/local/pgsql/lib
# Chemin des commandes Postgres
export PATH=/usr/local/pgsql/bin:$PATH
Pour vérifier : Se connecter entend que utilisateur « postgres » :
$> su – postgres
Password :
$> env | grep PATH=
II - Installation
6 - Initialisation
Donner les droits aux utilisateurs :
$> sudo chmod o+rw /usr/local/pgsql/
Créer le répertoire qui va contenir les bases de données (culster) :
$> sudo mkdir /usr/local/pgsql/data
Puisque l’utilisateur « postgres » est le super utilisateur du PostgreSQL,
alors il doit être le propriétaire de /usr/local/pgsql/data/ :
$> sudo chown postgres /usr/local/pgsql/data -R
II - Installation
6 - Initialisation
Initialisation PostgreSQL :
$> su - postgres
Password :
$> initdb -D /usr/local/pgsql/data -A md5 -W
-A md5 : Pour crypter les mots de passe en md5.
- W : Assigner un mot de passe au super-utilisateur. Sans cela,
tous les utilisateurs locaux peuvent avoir accès au serveur
sans sécurité.
Pour ne pas écrire a chaque fois -D, éditer le profile de l’utilisateur «postgres» :
$> gedit ~/.bash_profile
Ajouter la nouvelle variable d’environnement PGDATA dans le profile :
export PGDATA= /usr/local/pgsql/data
II - Installation
7 - Service Postgres
Le répertoire /opt/sources/postgresql-8.2.3/ contient les scripts de
démarrage pour différentes plateformes .
Rendre Postgres un service pour une machine linux :
$> sudo cp /opt/sources/postgresql-8.2.3/contrib/start-scripts/linux
/etc/init.d/postgres
Mise à jour de la liste des services :
$> sudo update-rc.d postgres defaults
Démarrer postgreSQL :
$> sudo /etc/init.d/postgres start
$> sudo /etc/init.d/postgres start
II - Installation
8 - Démarrage
Démarrer postgreSQL :
$> sudo /etc/init.d/postgres start
Arrêter postgreSQL :
$> sudo /etc/init.d/postgres stop
Redémarrer postgreSQL :
$> sudo /etc/init.d/postgres restart
Recharger les paramètres postgreSQL :
$> sudo /etc/init.d/postgres reload
II - Installation
8 - Démarrage
Démarrer postgreSQL :
$> pg_ctl start
Arrêter postgreSQL :
$> pg_ctl stop
Redémarrer postgreSQL :
$> pg_ctl restart
Recharger les paramètres postgreSQL :
$> pg_ctl reload
III - Exploitation
III - Exploitation
1 - Concepts de base
Lors de l'initialisation du "cluster" de base de données, deux bases sont
créées : template1 et template0.
Lors de la création d'une base, c'est template1 qui est copiée par défaut,
toute modification de template1 est donc répercutée sur les nouvelles
bases de données.
Template0 est une base modèle qui ne doit pas être modifiée, elle contient
des objets prédéfinis selon la version de PostgreSQL.
Pour se connecte au serveur :
$> psql -U postgres
$> psql -U postgres template1
III - Exploitation
1 - Concepts de base
PostgreSQL vient avec plusieurs langages côté serveur qui permettent
d'écrire des procédures stockées. Pour cela il faut les installer.
Le langage propre à PostgreSQL s'appelle PL/PGSQL.
Il faut installer PL/PGSQL sur template1, afin que toutes les bases en
disposent.
On ajoute le langage grâce à la commande shell suivante :
$> createlang plpgsql template1
la commande pour créer une base de données à partir d’une template est :
$> create database ma_base template template_base;
III - Exploitation
1 - Concepts de base
Création d'une base de données en mode non connecter :
$> createdb ma_base -U postgres
Création d'une base de données en mode connecter :
Postgres#> create database ma_base
Suppression d'une base de données en mode non connecter :
$> dropdb ma_base -U postgres
Suppression d'une base de données en mode non connecter :
Postgres#> drop database ma_base
III - Exploitation
1 - Concepts de base
Exemple des quelques commandes sous psql :
Pour changer la base courante :
Postgres#>\c ma_base
Exemple de requête :
Postgres#> SELECT version();
Postgres#> SELECT current_database();
Postgres#> SELECT current_user();
Postgres#> SELECT user();
III - Exploitation
2 - Cas Pratique :
Un hôpital désire gérer, pour chaque patient, les informations suivantes :
Nom, Prénom
Adresse (numéro, rue et ville)
Matricule, CIN, CNSS
Date naissance
Dossier médical (un chemin pour le dossier électronique)
Par ailleurs l’hôpital tient à jour la liste des médecins qu’il a déjà
enregistrés, qui comprend pour chaque médecin :
Nom, Prénom
Adresse (numéro, rue et ville)
Code
Spécialité
Téléphone
III - Exploitation
2 – Cas Pratique :
Diagramme de classe :
III - Exploitation
2 - Cas Pratique :
Travail demandé :
Créer une base de données appelée «hopital»
Créer le type «identité» qui comprend : le nom et le prénom
Créer le type «adresse» identifié par : numéro, rue, ville
Créer la table «personne» qui contient les attributs suivants :
id de type identité
adr de type adresse
Créer la table «médecin» qui hérite de la table personne.
Créer la table «patient» qui hérite de la table personne.
Insérer des données afin d’exploiter la base de données.
III - Exploitation
2 - Cas Pratique :
Travail demandé :
Lister l’identité et l’adresse de tout les Patients et les médecins
Lister les patients qui habitent Casablanca et leurs médecins.
Lister les patients qui ont consulté un médecin de leur ville
Créer la fonction «Afficher» qui a comme paramètre une identité
et qui l’affiche sous forme «Nom Prénom».
Créer la fonction «Afficher» qui a comme paramètre une adresse
et qui l’affiche sous forme « N° …, rue, ville ». (Surcharge de la
fonction Afficher) .
Lister les patients et les médecins avec la nouvelle forme (utiliser
les fonctions) .
III - Exploitation
2 - Cas Pratique :
Travail demandé :
Changer l'adresse du médecin de code16.
Changer juste la rue du médecin de code 17
Créer la fonction «Listerpatient» qui a comme paramètre un
entier et qui permet d’afficher les nom et prénom des patients
qui ont vu un médecin donné.
Donner un exemple d’utilisation de la fonction «Listerpatient»
Sauvegarder la base de données «hopital».
Créer une nouvelle base de données nommée «backhopital» et
restaurer la sauvegarde de la base «hopital» dans la nouvelle
base de données.
Téléchargement