Il faut installer PostgreSQL (cf. cours, slide 122). Voici une liste de commandes utiles pour la suite du TP.

Documents pareils
TP Contraintes - Triggers

Le langage SQL (première partie) c Olivier Caron

La replication dans PostgreSQL

Bases de Données relationnelles et leurs systèmes de Gestion

Olivier Mondet

Le langage SQL pour Oracle - partie 1 : SQL comme LDD

COMMANDES SQL... 2 COMMANDES DE DEFINITION DE DONNEES... 2

Compétences Business Objects

Notes de cours : bases de données distribuées et repliquées

TP3 : Creation de tables 1 seance

Création et Gestion des tables

1. Base de données SQLite

ISC Système d Information Architecture et Administration d un SGBD Compléments SQL

Le Langage De Description De Données(LDD)

I. MySQL : Serveur et SGBD

TD : Requêtes SQL (BDR.TD2-1) INSA 3IF

Licence de MIDO - 3ème année Spécialités Informatique et Mathématiques Appliquées

Installation d'un serveur FTP géré par une base de données MySQL

SGBDR. Systèmes de Gestion de Bases de Données (Relationnelles)

I4 : Bases de Données

Introduction au Système de Gestion de Base de Données et aux Base de Données

GUIDE D INSTALLATION DE L APPLICATION GECOL SUR

Cours Bases de données 2ème année IUT

CREATION WEB DYNAMIQUE

PHP 5. La base de données MySql. A. Belaïd 1

Encryptions, compression et partitionnement des données

Application web de gestion de comptes en banques

Intégrité des données

Cours: Administration d'une Base de Données

Langage SQL : créer et interroger une base

Exonet : sauvegarde automatisée d une base de données

Les bases de données

Bases de données et sites WEB

Accéder à PostgreSQL par JDBC via un tunnel SSL Java

Pour les débutants. langage de définition des données

ORACLE 10G DISTRIBUTION ET REPLICATION. Distribution de données avec Oracle. G. Mopolo-Moké prof. Associé UNSA 2009/ 2010

Réplication logique avec PostgreSQL 9.4

Cours Bases de données 2ème année IUT

Historisation des données

1. Qu'est-ce que SQL? La maintenance des bases de données Les manipulations des bases de données... 5

Bases de données relationnelles

PHP et les Bases de données - Généralités

Comprendre les bases de données

Pratique et administration des systèmes

Les BASES de DONNEES dans WampServer

Langage SQL (1) 4 septembre IUT Orléans. Introduction Le langage SQL : données Le langage SQL : requêtes

Langage propre à Oracle basé sur ADA. Offre une extension procédurale à SQL

Gestion des utilisateurs et de leurs droits

INSTITUT NATIONAL DES TELECOMMUNICATIONS CONTROLE DES CONNAISSANCES. 2. Les questions sont indépendantes les unes des autres.

Procédure d'installation de PostgreSQL pour Windows

BASES DE DONNEES TP POSTGRESQL

Chapitre 3 LE MODELE RELATIONNEL ET SQL (DDL)

Structured Query Language

Gestion des transactions et accès concurrents dans les bases de données relationnelles

A QUOI SERVENT LES BASES DE DONNÉES?

PHP 4 PARTIE : BASE DE DONNEES

Intégrité sémantique dans les bases de données relationnelles

Techniques de stockage. Techniques de stockage, P. Rigaux p.1/43

Sommaire. Etablir une connexion avec une base de données distante sur PostGreSQL

Cours SQL. Base du langage SQL et des bases de données

Gestion d identités PSL Exploitation IdP Authentic

Installation et Mise en œuvre de MySQL

Manuel utilisateur (Manuel_utilisateur_version pdf) Manuel Reprise des données (Manuel_Reprise_donnees_version

Plan. Bases de Données. Sources des transparents. Bases de SQL. L3 Info. Chapitre 4 : SQL LDD Le langage de manipulation de données : LMD

OpenPaaS Le réseau social d'entreprise

SQL. Oracle. pour. 4 e édition. Christian Soutou Avec la participation d Olivier Teste

Notion de base de données

Classe et groupe : 1P 3 SEN TRI. Ubuntu : serveur Contrôleur de Domaine (PDC) avec SAMBA

Partie 0 : Gestion des tablespace et des utilisateurs... 3

Année Universitaire ième année IMAC Mardi 6 janvier Cloud computing Travaux Pratiques

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

Tests de performance du matériel

1. Présentation du TP

Serveur Linux : FTP. Mise en place d un service FTP sous Linux. Bouron Dimitri 20/04/2014

Gestion de base de données

Le protocole FTP (File Transfert Protocol,

Auto-évaluation Oracle: cours de base

Structure fonctionnelle d un SGBD

Partie I : Créer la base de données. Année universitaire 2008/2009 Master 1 SIIO Projet Introduction au Décisionnel, Oracle

PHP. Bertrand Estellon. 26 avril Aix-Marseille Université. Bertrand Estellon (AMU) PHP 26 avril / 214

I/ Présentation. On considère une BD CIRQUE dont le schema conceptuel : PERSONNEL _CIRQUE (NOM, ROLE) ;

Initiation à SQL. Le langage de communication avec une base de données relationnelles. Application avec PostgreSQL. Nathalie Camelin 2011/2012

Manuel utilisateur (manuel_utilisateur_version pdf) SOMMAIRE

TP Bases de données réparties

Cours 3. Développement d une application BD. DBA - Maîtrise ASR - Université Evry

Présentation du projet

Raja Bases de données distribuées A Lire - Tutoriel

Architecture de la plateforme SBC

Administration des bases de données relationnelles Part I

Réplication E-maj Foreign Data Wrapper PostGIS PostgreSQL-f

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

Bases de données élémentaires Maude Manouvrier

PHP et mysql. Code: php_mysql. Olivier Clavel - Daniel K. Schneider - Patrick Jermann - Vivian Synteta Version: 0.9 (modifié le 13/3/01 par VS)

PHP. PHP et bases de données

NFA 008. Introduction à NoSQL et MongoDB 25/05/2013

Transcription:

ADMIN SGBD TP 1 Préliminaires L'objectif de ce TP est de: utiliser des paramètres d'initialisation, installer l environnement (PostgreSQL, base, tables), créer des utilisateurs, des vues, et de gérer les privilèges, créer des triggers. Il faut installer PostgreSQL (cf. cours, slide 122). Voici une liste de commandes utiles pour la suite du TP. Description Commande Aide SQL \h Aide sur les commandes \ \? Liste des tables Description d une table Redirection sortie Exécution d un script Nom, type et propriétaire des tables dans la base \dt \d nomtable \o nomfichier \i nomfichier \d Configuration de base 1. Installation Quitter PostgreSQL \q Une fois PostgreSQL compilé et installé, vous devez créer un compte postgres (au sens système d exploitation). Sous ce compte, il faut créer la base dont vous allez vous servir. [galibier]# su - postgres bash$ createdb arsall Ensuite, vous démarrez la base: bash$ pg_ctl -D /usr/local/pgsql/data start Vous vous connectez à une session postgresql bash$ psql -d arsall -U postgres Une première chose à faire est de donner un mot de passe à l utilisateur postgres (au sens PostgreSQL). Vous utiliserez la commande: asrall=# alter user postgres with password foo ; Vous créez ensuite votre compte utilisateur: asrall=# create user olivier with password toto ; Après avoir quitté la session (grâce à \q), vous vous connectez sous l utilisateur que vous venez de créer: bash$ psql -d arsall -U olivier

2. Configuration des accès PostgreSQL permet aux administrateurs de contrôler lees accès à la base. Les accès peuvent être autorisés étant donnés une base, un utilisateur, ou une adresse TCP/IP. Par défaut, PostgreSQL autorise uniquement l accès aux utilisateurs connectés à l ordinateur qui exécute le serveur. Pour activer l accès réseau, vous devez démarrer le serveur en ayant au préalable modifier le fichier postgresql.conf, et en particulier l option listen_addresses ou utiliser l option -i (cf. Documentation postgresql-8.2-a4.pdf, section 17.16) Les accès sont contrôlés grâce au fichier data/pg_hba.conf. Ce fichier contient plusieurs types de configuration: Local Les entrées locales contrôlent les accès pour les utilisateurs connectés sur la machine du serveur. Les options sont: trust, password, crypt, et reject. L option trust permet aux utilisateurs connecté à la machine de se connecter au serveur, l option password nécessite un mot de passe, l option crypt est équivalent à password mais le mot de passe est crypté, et reject rejète toutes les connexions à la base. Un exemple: local all all trust host all all 127.0.0.1/32 trust Host et Hostssl Ces deux options permettent de contrôler les accès TCP/IP. On a les mêmes options que Local, plus les trois suivantes: ident pour utiliser un ident distant pour l authentification, krb4 pour utiliser une authentification Kerberos 4, et krb5 pour une authentification Kerberos 5. Ces options sont activées uniquement si l option -i a été utilisée lors du lancement de postmater (cela équivaut également à définir listen_addresses= * dans postgresql.conf). Un exemple: host all all 192.168.34.0 crypt host ventes all 192.168.7.12 ident Gestion personnalisée Par défaut, les mots de passe utilisés par password et crypt sont stockés dans la table pg_shadow. On peut éventuellement avec password surchager le mot de passe de pg_shadow. Par exemple: host all all 192.168.34.0 password mdprel utilise la relation mdprel pour authentifier les utilisateurs. Divers On peut fixer le nombre maximal de connexions grâce à la variable max_connections. On peut fixer un timeout pour la durée dédiée à l authentification d un utilisateur grâce à la variable authentification_timeout. Vous pouvez tester les différentes options de pg_hba.conf. Par exemple, une fois que vous avez défini l utilisateur olivier et son mot de passe, vous pouvez remplacer trust par password dans pg_hba.conf. Si vous arrêtez le serveur et que vous le redémarrez, et que vous essayez de vous connecter avec pgsql -d asrall -U olivier, le mot de passe vous sera demandé. 3. Arrêt du serveur On arrête le serveur proprement grâce à la commande: bash$ pg_ctl -D /usr/local/pgsql/data stop -m fast

4. Backup de la base Pour sauvegarder la base, on peut arrêter le serveur, et copier les fichiers du répertoire data/ afin de les dupliquer. On peut également sauvegarder une base active grâce à la commande pg_dumpall (pour toutes les bases), ou pg_dump (pour une base donnée). Les fichiers de configuration (comme pg_hba.conf par exemple) ne sont pas sauvegardés, donc il faut veiller à les inclure dans la sauvegarde. Par exemple, pour sauvegarder la base test, on écrira: pg_dump test > /tmp/test.dump. Pour restaurer la base, on utilisera les commandes suivantes: createdb newtest psql newtest < /tmp/test.dump 5. Surveillance Pour surveiller un serveur PostgreSQL, on peut utiliser l option -o de postmaster (cf prochaine séance). On peut également analyser les informations liées aux processus postgres et postmaster. Par exemple, un ps sur le processus postgres donnera des informations sur la charge du processeur, l utilisation de la mémoire, le temps d exécution, Par exemple, sur un système Unix, on peut avoir les informations suivantes: USER PID %CPU TIME STARTED VSZ INBLK OUBLK COMMAND postgres 18923 45.4 0:27.79 1:15PM 2140 34 1 /usr/local/postgres/ Cela signifie que le processus postgres utilise 45,4% du CPU, a utilisé 27 secondes du CPU, a démarré à 13h15, a lu 34 blocs (pages), et a écrit 1 bloc (page). Même si les informations sont moins complètes que celles pouvant être obtenues avec les outils d analyse de PostgreSQL, cela donne déjà une base d informations intéressantes. Dictionnaire des données Charger la table PAYS grâce au fichier pays.sql. 1.1 Combien d index sont définis sur la table PAYS? 1.2 Y-a-t-il une création d index dans le fichier pays.sql? Pourquoi PostgreSQL crée-t-il un index? 1.3 Créer un second index sur le champ PAYS.population en utilisant SQL. Donner la requête qui permet de vérifier que l index a été crée et ses propriétés. 1.4 Exécuter l instruction SQL suivante: ANALYZE Pays; 1.5 Écrire les commandes qui permettent d analyser la table PAYS, et d afficher le nombre de n- uplets et de pages utilisés par la table PAYS (on pourra s intéresser à la table pg_class). 1.6 Comment donneriez-vous la liste des vues systèmes? 1.7 En utilisant une des vues obtenue ci-dessus, donner les statistiques de chaque champ de la table PAYS. Quel est l attribut qui permet de connaître le nombre de valeurs différentes dans PAYS? 1.8 Toujours en utilisant une vue système, donner les informations concernant les index de la table PAYS. Utilisateurs, vues et autorisations 2.1 Créer deux autres utilisateurs. Vous leur donnerez un nom, et vous indiquerez qui est l utilisateur A (vous), l utilisateur B, et l utilisateur C. 2.2 Créer les tables FILM, ACTEUR, et CASTING en utilisant les fichiers film.sql, acteur.sql, et casting.sql.

2.3 Donner la commande qui permet de créer un groupe TP1 qui regroupe les trois utilisateurs. Donner la commande qui vous permet de lister les utilisateurs appartenant à un groupe donné. 2.4 Dans PostgreSQL, on peut affecter 5 types de droit à un utilisateur ou à un groupe (r pour SELECT, a pour INSERT, w pour UPDATE, d pour DELETE, x pour REFERENCES, R pour les RULE, t pour les trigger, C pour CREATE, X pour EXECUTE, U pour USAGE, et all pour posséder rawdxtcxur). Quelle commande utilisez-vous pour créer une vue FILM_VUE sur la table FILM, et pour accorder sur cette vue les droits de lecture au groupe que vous avez créé en 2.3? On vérifiera les droits à l aide de la commande \z FILM. 2.5 Ouvrir trois terminaux simulant les trois utilisateurs. 2.6 Créer les tables suivantes sous le compte de l utilisateur A: XX désigne les initiales de votre prénom et votre nom. Par exemple, Jean Martin créera les tables FILMJM, ACTEURJM, et CAS- TINGJM. CREATE TABLE acteurxx (id INTEGER NOT NULL, nom VARCHAR(35), PRIMARY KEY (id)); CREATE TABLE filmxx (id INTEGER NOT NULL, titre VARCHAR(70), annee DECIMAL(4), note FLOAT, votes INTEGER, realisateur INTEGER, PRIMARY KEY (id)); CREATE TABLE castingxx ( filmid INTEGER NOT NULL, acteurid INTEGER NOT NULL, ord INTEGER, PRIMARY KEY (filmid, acteurid), FOREIGN KEY (filmid) REFERENCES filmxx(id), FOREIGN KEY (acteurid) REFERENCES acteurxx(id)); Insérer les données suivantes dans FILMXX (inutile de peupler les autres tables). INSERT INTO filmxx SELECT * FROM film WHERE annee > 1997; COMMIT; On suppose que vous êtes l utilisateur A. Donner les instructions SQL permettant de répondre aux questions suivantes: 2.6.1 l utilisateur A donne les droits à l utilisateur B d accèder à toutes les informations concernant les films réalisés en 2001 et 2002. 2.6.2 l utilisateur A donne les droits aux utilisateurs B et C pour qu ils puissent accèder à toutes les informations concernant les films réalisés en 2003. 2.6.3 l utilisateur A autorise l utilisateur B à rechercher, supprimer ou mettre à jour les informations de la table FILM excepté la note. 2.6.4 l utilisateur A autorise l utilisateur B à rechercher et insérer toutes les informations concernant un film, et à transmettre ses droits aux autres utilisateurs. Par exemple, quelle est la commande qui lui permet à B de donner ses droits à l utilisateur C? L utilisateur A (vous) annule les droits de l utilisateur B. Que se passe-t-il pour C? 2.6.5 l utilisateur A autorise l utilisateur B à rechercher et insérer toutes les informations concernant un film, et à transmettre ses droits. L utilisateur B donne ses privilèges à l utilisateur C en lui permettant de transmettre ses droits. Ainsi, l utilisateur C accorde ses privilèges à l utilisateur B. Maintenant, l utilisateur A (vous) annule tous les privilèges à l utilisateur B. B peut-il encore insérer des films dans FILMXX?

Triggers On va utiliser la table FILMXX de l exercice précédent. 1. Création des triggers On suppose que FILMXX est une table importante, et on souhaite surveiller son utilisation, et en particulier les modifications sur la note (INSERT, DELETE, UPDATE). On va créer en premier lieu une table FILM_AUDIT. create table film_audit ( quand date, utilisateur varchar(10), action varchar(10), filmid float(15), anc_note float(15), nouv_note float(15) ); Donner ensuite le code SQL des trois règles permettant de surveiller les modifications de FILM.note, et de placer les informations dans la table FILM_AUDIT. Conseils: on utilisera la création de règle de PostgreSQL (CREATE RULE). on utilisera les fonctions now() et user pour connaître l instant et l utilisateur. on utilisera les valeurs old.att et new.att pour référencer les anciennes et nouvelles valeurs d un attribut att. 2. Test des triggers On travaillera avec un utilisateur créé précédemment. On lui donnera les droits de modification sur la table FILMXX. Quelles sont les commandes nécessaires pour voir les traces des modifications de l attribut note. On donnera le contenu de la table FILM_AUDIT après quelques tests que vous expliciterez.