Vous êtes sur la page 1sur 4

TP n1 - Installation du SGBDR PostgreSQL sous Linux Ubuntu

SLAM3 2015/2016
Pr-requis : Vous devez disposer d'une machine virtuelle Ubuntu Server fonctionnelle. N'oubliez pas de
faire un instantan de cette machine avant toute manipulation sur le serveur PostgreSQL.

I- Installation de PostgreSQL sur votre serveur virtuel


1. Sur votre serveur virtuel, installez le paquet postgresql
2. L'installation ajoute un nouvel utilisateur linux et un utilisateur de la base de donnes
nomm postgres. Il est seul autoris, pour l'instant, se connecter la base de donnes. Il ne
possde pas de mot de passe, et par mesure de scurit nous ne lui en attribuerons pas. Nous
allons crer un nouvel utilisateur. Connectez avec l'utilisateur postgres en utilisant la
commande suivante :
sudo -i -u postgres
3. Lancez l'invite de commande Postgresql l'aide de la commande psql.
4. Vous tes dsormais connect Postgresql en mode administrateur.
5. Crer un utilisateur nomm test (comme votre utilisateur linux)
CREATE USER test ;
6. Donnez-lui le droit de crer un base de donnes.
ALTER ROLE test WITH CREATEDB ;
7. Crez un base portant le mme nom que l'utilisateur :
CREATE DATABASE test OWNER test ;
8. Ajoutez un mot de passe votre utilisateur
ALTER USER test WITH ENCRYPTED PASSWORD 'mot de passe' ;
Quittez Postgresl avec \q
Quittez l'utilisateur postgres avec exit
Lancez Postgresql avec la command psql (normalement vous tes automatiquement
connect avec la base de donnes test).

A vous de jouer
Une fois connect avec votre compte test Postgresql, vous pouvez utiliser les commandes
suivantes :
\h pour obtenir de l'aide sur les commandes SQL
\? pour obtenir de l'aide sur les commandes Postgresql
\q pour quitter
Rpondez aux questions suivantes :
1. Quelle commande devez-vous taper pour afficher la liste des bases de donnes dans
Postgresql ?
2. Mme question mais pour les tables de la base courante.
3. En vous aidant de l'annexe 1, crez une nouvelle base de donnes nomme test2.
4. Quelle commande devez-vous taper pour vous connecter la nouvelle base de donnes ?

TP1v2 SLAM3 2015/2016 C. Boin

II- Connexion l'aide d'un client (votre machine hte)


Par dfaut, votre serveur ne rpond qu'aux requtes provenant de lui-mme. Pour se connecter
depuis une machine distante, il faut modifier les fichiers de configuration de Postgresql sur votre
serveur.
1. En mode super-utilisateur, ditez le fichier /etc/postgresql/9.3/main/postgresql.conf.
2. Modifiez la ligne suivante pour autoriser n'importe qu'elle machine se connecter
listen_addresses = '*' (n'oubliez d'enlever le commentaire #)
3. Editez galement le fichier /etc/postgresql/9.3/main/pg_hba.conf
4. Ajouter la nouvelle ligne suivante pour autoriser les connexions provenant de tout le rseau
des salles 121 et 122 :
host all all 172.17.199.0/24
md5
host all all 172.17.122.0/24
md5
5. Redmarrez le service postgresql l'aide de la commande
sudo service postgresql restart
6. Rcuprer l'adresse IP de votre serveur (avec ifconfig):

7. Sur votre machine hte, installez le paquet postgresql-client


8. Connectez-vous depuis la machine hte avec la commande suivante :
psql -h 172.17.199.??? test test

A vous de jouer
Comment installer le client web phppgadmin sur le serveur et qu'il soit accessible depuis
n'importe quelle machine du rseau?
La procdure est chercher sur internet !

III- Cration d'une base de donnes


1. En vous aidant de l'annexe 1, crez l'aide de Postgresql la base de donnes ayant le schma
relationnel suivant :
SALARIE (Matricule, Nom, Prenom, DateDerniereFormation)
DEMANDER (#Matricule, #CodeFormation, DateDemande, AvisSuperviseur)
SUIVRE ( #Matricule, #CodeFormation)
FORMATION ( CodeFormation, LibelleFormation, ...)

2. Insrez quelques lignes inventes dans chaque table.


3. Rpondez aux questions suivantes en SQL, puis testez vos requtes sur votre serveur :
Liste des noms de salaris avec la date de leur dernire formation.
Liste des formations qui n'ont jamais t demande depuis le 01/01/2013.
Liste des formations (libell de la formation, date de la demande et avis du superviseur)
demandes par le salari de matricule E540 depuis le dbut de lanne 2011.
Liste des salaris (nom et prnom du salari, avis du superviseur) nayant pas t admis suivre
la formation de code F116.

TP1v2 SLAM3 2015/2016 C. Boin

Annexe 1 (Gestion des tables en SQL)


1. CRER UNE BASE
CREATE
DATABASE
nom_base_de_donnes
[ [ OWNER [=] propritaire_de_la_base ]
[ TABLESPACE [=] tablespace ] ] ;

Tablespace : Cela dfinit lespace de travail


par dfaut dans lequel les objets de la base
de donnes seront rangs.

SUPPRIMER UNE BASE


Cest une opration trs dangereuse qui ne peut tre ralise que par le propritaire.
DROP DATABASE nom_base_de_donnes ;

2. GRER UNE TABLE


2.1. CRER UNE TABLE
CREATE TABLE nom_table
Exemple 1 :
(champ1 type contraintes de create table client
(numcli integer primary key,
colonne,
nomcli char(20),
...
remise real);
champn type,
contraintes de tables);
Les contraintes principales sont : Exemple 2 :
create table lignecommande
primary key,
(numclient integer,
foreign key,
numcommande integer,
quantite integer,
check, ...

primary key (numcli, numcommande),


foreign key (numclient) references client(numcli),
foreign key (numcommande) references cde(numcde));

2.2. SUPPRIMER UNE TABLE

DROP
TABLE
[CASCADE] ;

nom_table Attention, on peut supprimer une table


pleine, mais on ne peut pas supprimer une
table qui est rfrence dans d'autres tables

(par REFERENCES).
2.3. MODIFIER UNE TABLE
ALTER TABLE nomtable

Exemple :

ADD ou DROP ...;

alter table client


add column service char(10);

ALTER TABLE nomtable


RENAME champ TO nouveaunomchamp ;
ALTER TABLE nomtable
RENAME TO nouveaunomtable ;
ALTER TABLE nomtable
SET SCHEMA nouveauschema;

Il existe bien d'autres options. Consulter


l'aide de Postgres pour en savoir plus.
2.4. INSRER DANS UNE TABLE
INSERT INTO nom_table
VALUES
(valeurchamp1,
valeurchampn) ;

Exemple :
..., insert into client
values (101, 'toto', 0.1, 12);

2.5. SUPPRIMER DANS UNE TABLE


DELETE FROM nom_table
WHERE condition ;

Exemple :
delete from client
where numcli = 101;

2.6. MODIFIER DANS UNE TABLE


UPDATE nom_table
SET champ = valeur
WHERE condition ;

TP1v2 SLAM3 2015/2016 C. Boin

Exemple :
update client
set nom = 'titi'
where numcli = 101;