Vous êtes sur la page 1sur 27

Ministère de l’Enseignement Supérieur et de recherche scientifique

Université de Sousse

Séance de Cours

Chapitre 7 :
Contrôle des données

2021-2022
I. Introduction
 Dans tout système multi-utilisateur, l’usager d’un SGBD doit être identifié avant
de pouvoir utiliser des ressources.

 L’accès aux informations et à la base de données doit être contrôlé à des fins de
sécurité et de cohérence.
 La figure suivante illustre un groupe d’utilisateurs dans lequel existe une classification
entre ceux qui peuvent consulter, mettre à jour, supprimer, voire les tables, …

2
I. Introduction
Nous verrons dans ce chapitre les aspects du langage SQL qui concernent le contrôle
des données et des accès. Nous étudierons :
● la gestion des utilisateurs
● la gestion des privilèges qui permettent de donner des droits sur la base de données
● la gestion des rôles qui regroupent des privilèges système ou objets.

Un utilisateur est identifié au niveau de la base par son nom et peut se connecter puis
accéder aux objets de la base sous réserve d’avoir reçu un certain nombre de privilèges.

Un schéma est une collection nommée (du nom de l’utilisateur qui en est propriétaire)
d’objets (tables, vues, séquences, index, procédures, etc.).

3
II. Gestion des utilisateurs
II.1 Création d’un utilisateur (CREATE USER)
Syntaxe :
CREATE USER utilisateur IDENTIFIED BY motdePasse
[ DEFAULT TABLESPACE nomTablespace
[QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ] ]
[TEMPORARY TABLESPACE nomTablespace
[QUOTA { entier [ K | M ] | UNLIMITED } ON nomTablespace ].]
[PROFILE nomProfil ] [PASSWORD EXPIRE ] [ ACCOUNT { LOCK |
UNLOCK } ] ;
IDENTIFIED BY motdePasse : permet d’affecter un mot de passe à un utilisateur
local .
DEFAULT TABLESPACE nomTablespace : associe un espace disque de travail
à l’utilisateur.
TEMPORARY TABLESPACE nomTablespace : associe un espace disque temporaire
(dans lequel certaines opérations se dérouleront) à l’utilisateur.
4
II. Gestion des utilisateurs
II.1 Création d’un utilisateur (CREATE USER) : suite
 QUOTA : permet de limiter ou pas chaque espace alloué.

 PROFILE : nomProfil affecte un profil (caractéristiques système relatives au


CPU et aux connexions) à l’utilisateur.

 PASSWORD EXPIRE : permet d'obliger l’utilisateur à changer son mot de passe à la


première connexion (par défaut il est libre).

ACCOUNT { LOCK | UNLOCK } : pour verrouiller ou libérer l’accès à la base (par


défaut UNLOCK).

5
II. Gestion des utilisateurs
Tablespace
Un tablespace Oracle est une structure logique qui regroupe des fichiers du
système d'exploitation.
C'est dans les tablespaces que se trouvent les différents objets d'une base de
données : tables, indexes, undo segments, segments de tri, dictionnaire de données.

Afficher la liste des tablespaces d'une base


La vue à utiliser est DBA_TABLESPACES.

Syntaxe : SQL> SELECT TABLESPACE_NAME, BLOCK_SIZE, STATUS, CONTENTS,


EXTENT_MANAGEMENT, ALLOCATION_TYPE,
SEGMENT_SPACE_MANAGEMENT
FROM DBA_TABLESPACES
ORDER BY TABLESPACE_NAME;

6
II. Gestion des utilisateurs
II.1 Création d’un utilisateur (CREATE USER) : Exemple

II.2 Suppression d’un utilisateur (DROPUSER)


Syntaxe : DROP USER utilisateur [CASCADE];

Oracle ne supprime pas par défaut un utilisateur s’il possède des objets (tables,
séquences, index, déclencheurs, etc.).
L’option CASCADE force la suppression et détruit tous les objets du schéma de
l’utilisateur.
7
II. Gestion des utilisateurs
II.3 Privilèges d'accès à une base de donnée
 Les utilisateurs, une fois créés n’ont aucun droit (Privilèges )sur la base de données
sur laquelle ils sont connectés.
 Un privilège est un droit d’exécuter une certaine instruction SQL (on parle de
privilège système), ou un droit d’accéder à un certain objet d’un autre schéma (on
parle de privilège objet). Les privilèges qui peuvent être donnés sont les suivants :
 SELECT droit de lecture
 INSERT droit d'insertion de lignes
 UPDATE droit de modification de lignes
 UPDATE (col1, col2, ...) droit de modification de lignes limité à certaines colonnes
 DELETE droit de suppression de lignes
 ALTER droit de modification de la définition de la table
 INDEX droit de création d'index
 ALL tous les droits ci-dessus 8
II. Gestion des utilisateurs
II.4 Attribution de privilèges système (GRANT)
Syntaxe :
GRANT privilège ON table /vue TO utilisateur [WITH GRANT OPTION]

 Les privilèges SELECT, INSERT et UPDATE s'appliquent aux tables et aux


 Les autres s'appliquent uniquement aux tables
vues.

 Un utilisateur ayant reçu un privilège avec l'option facultative ‘WITH GRANT


OPTION’ peut le transmettre à son tour.
Exemple :
GRANT SELECT ON EMP TO Paul;

 Dans un même ordre GRANT, on peut accorder plusieurs privilèges à plusieurs


utilisateurs :
GRANT SELECT, UPDATE ON EMP TO Paul, Paul2;
9
II. Gestion des utilisateurs
II.4 Attribution de privilèges système (GRANT) : suite
Les droits peuvent être accordés à tous les utilisateurs en utilisant le mot
réservé PUBLIC à la place d'un nom d'utilisateur :
Exemple :
GRANT SELECT ON EMP TO PUBLIC;

II.5 Révocation de privilèges système (REVOKE)


 Un utilisateur ayant accordé un privilège peut le reprendre à l'aide de l'ordre REVOKE
Syntaxe :
REVOKE privilège ON table /vue FROM utilisateur

Si on enlève un privilège à un utilisateur, ce privilège est automatiquement retiré à


tout autre utilisateur à qui il aurait accordé ce privilège.

10
III. Les Rôles
III.1 Présentation
• Un rôle est un ensemble nommé de privilèges.

• Il est accordé à un ou plusieurs utilisateurs, voire à tous.


• Il facilite la gestion des privilèges.

La chronologie des actions à entreprendre pour travailler avec des rôles est la suivante :

1) créer le rôle (CREATE ROLE) ;


2) l’alimenter de privilèges système ou objets par GRANT ;
3) l’attribuer par GRANT à des utilisateurs, ou à d’autres rôles ;
4) lui ajouter éventuellement de nouveaux privilèges système ou objets
par GRANT.
11
III. Rôles
III.2 Création d’un rôle (CREATE ROLE)
Syntaxe :
CREATE ROLE nomRôle
[ NOT IDENTIFIED | IDENTIFIED
{ BY motdePasse | USING [schéma.]paquetage |
EXTERNALLY | GLOBALLY } ] ;

 NOT IDENTIFIED : indique que l’utilisation de ce rôle est autorisée sans


mot de passe.

 IDENTIFIED : indique que l’utilisateur doit être autorisé par une méthode (locale
par un mot de passe) avant que le rôle soit activé par SET ROLE.

12
III. Rôles
III.2 Création d’un rôle (CREATE ROLE)
Exemple :

 Voir_Base autorise l’accès en lecture aux tables de deux schémas.

 Modif_Pilotes autorise la modification de la table Pilote du schéma olivier_teste au


niveau des colonnes nom et age.

 Voir_et_Modifier hérite des deux rôles précédents et est affecté à l’utilisateur


13
président.
III. Rôles
III.2 Création d’un rôle (CREATE ROLE)
Exemple :

Création des trois rôles.

CREATE ROLE Voir_Base NOT IDENTIFIED;


CREATE ROLE Modif_Pilotes NOT IDENTIFIED;
CREATE ROLE Voir_et_Modifier NOT IDENTIFIED;

Alimentation des rôles par des privilèges.

GRANT SELECT ON olivier_teste.Pilote TO Voir_Base ;


GRANT SELECT ON christian_soutou.Qualifications TO Voir_Base ;
GRANT UPDATE (nom,age) ON olivier_teste.Pilote TO Modif_Pilotes;
14
III. Rôles
III.2 Création d’un rôle (CREATE ROLE)
Alimentation d’un rôle par deux autres rôles.
GRANT Voir_Base, Modif_Pilotes TO Voir_et_Modifier;
Affectation des trois rôles à des utilisateurs.

GRANT Modif_Pilotes TO christian_soutou;


GRANT Voir_Base TO christian_soutou, olivier_teste;
GRANT Voir_et_Modifier TO président
III.3 Révocation d’un rôle
Syntaxe :
REVOKE nomRôle [, nomRôle…]
FROM {utilisateur | nomRôle | PUBLIC} [,{utilisateur |
nomRôle |
PUBLIC}]… ;
15
III. Rôles
III.3 Révocation d’un rôle
Exemple :
révoquer le rôle Voir_Base de l’utilisateur oliver_teste, le rôle Voir_Base de rôle
Voir_et_Modifier et le privilège SELECT (de la table Qualifs) du rôle Voir_Base.

16
III. Rôles
III.4 Modification d’un rôle (ALTER ROLE)
ALTER ROLE nomRôle
Syntaxe :
[ NOT IDENTIFIED | IDENTIFIED { BY motdePasse | USING
[schéma.]paquetage | EXTERNALLY |GLOBALLY } ] ;
 Il s'agit de la modification d’un rôle au niveau de l’identification

Exemple :
ALTER ROLE Supprime_Pilotes
IDENTIFIED BY Ouille;
III.4 Suppression d’un rôle (DROP ROLE)
Syntaxe :
DROP ROLE nomRôle;

 Supprime le rôle et le désaffecte en cascade aux bénéficiaires

17
IV. Administration
Activation de l'affichage :
-- pour que la commande DBMS_OUTPUT fonctionne il faut activer le serveroutput
-- comme suit
-- sql> set serveroutput on

 Ré-executer la commande précédente : /


 Edition d’un fichier de commandes :
Edit nom_fichier (ajout automatique de l’extension .sql)
 Execution d’un fichier de commande :
Start nom_fichier [.sql] ou @ nom_fichier [.sql]
 Commentaire - -
 Sortie de SQL*Plus :
Exit ou Quit
Date : changement du format de système :
alter session set NLS_DATE_FORMAT='DD-MON-YY';
18
IV. Administration
 Obtenir la liste des tables
Select * from tab;
 Afficher la description d'une table:
desc nom-table;
 La syntaxe de modification de la TABLE est :
ALTER TABLE table_name
ADD "column 1" "data type for column 1"
DROP "column 1"
Rename column "old column name" to "new column name"
MODIFY "column 1" "new data type" --Change the data type for a column

19
IV. Administration
 Information sur les contraintes

Le dictionnaire de données conserve les informations sur les contraintes définies sur
la base. On peut les retrouver dans les vues:

20
IV. Administration
 Information sur les contraintes

21
IV. Administration
 Information sur les contraintes

Le dictionnaire de données conserve les informations sur les contraintes définies sur
la base. On peut les retrouver dans les vues:
CONSTRAINT_DEFS, USER_CONSTRAINTS,
USERS_CONS_COLUMNS, USER_CROSS_REFS,

Exemple:
Select constraint_name, constraint_type, table_name, r_constraint_name
from user_constraints;

Dans la réponse de cette requête, on trouvera les abréviations: P pour primary, U


pour unique, C pour check ou NOT NULL, R pour foreign key, et V pour le
type de contraints crées par WITH CHECK OPTION pour les vues.

select constraint_name from user_constraints


where table_name='journal'
22
IV. Administration
 Information sur les contraintes

23
V. Transaction
 Information sur les contraintes
On peut désigner des points de reprise dans une transaction :
savepoint nomPoint
On peut ensuite annuler toutes les modifications effectuées depuis un
point de reprise s'il y a eu des problèmes :
rollback to nomPoint
On évite ainsi d'annuler toute la transaction et on peut essayer de
pallier le problème au lieu d'annuler la transaction globale.

24
V. Transaction
 Information sur les contraintes
On peut désigner des points de reprise dans une transaction :
savepoint nomPoint
On peut ensuite annuler toutes les modifications effectuées depuis un
point de reprise s'il y a eu des problèmes :
rollback to nomPoint
On évite ainsi d'annuler toute la transaction et on peut essayer de
pallier le problème au lieu d'annuler la transaction globale.

25
V. Transaction
 Information sur les contraintes
On peut désigner des points de reprise dans une transaction :
savepoint nomPoint
On peut ensuite annuler toutes les modifications effectuées depuis un
point de reprise s'il y a eu des problèmes :
rollback to nomPoint
On évite ainsi d'annuler toute la transaction et on peut essayer de
pallier le problème au lieu d'annuler la transaction globale.

26
V. Transaction
 Sauvegarde de la session de travails
On SPOOL fichier
enregistre dans le fichier les commandes tapées ensuite par
l'utilisateur, et les réponses d'Oracle.
SPOOL OFF
arrête cette sauvegarde.

Lecture dans le buffer d'un fichier de commandes :


GET fichier
lit le contenu de fichier, et l'injecte dans le buffer SQL que l'on peut
ensuite modifier ou/et exécuter. S'il y a un / final dans fichier, il est
exécuté.

27

Vous aimerez peut-être aussi