Vous êtes sur la page 1sur 7

Atelier Administration Bases de Données

Atelier 5 : Utilisateurs, Privilèges et Rôles

Objectifs de l'atelier :
A la fin de cet atelier, l’étudiant doit être capable de :

 Créer des utilisateurs en leur spécifiant les paramètres nécessaires,


 Modifier les mots de passes et les quotas d'espace des utilisateurs,
 Distinguer entre les privilèges système et les privilèges objet,
 Attribuer et enlever des privilèges aux utilisateurs,
 Créer des rôles et leur attribuer des privilèges,
 Attribuer et enlever des rôles aux utilisateurs.

Enoncé :

Gestion des utilisateurs

1. Créez un utilisateur appelé "Ali" avec le mot de passe "Tunisie". Attribuez-lui DATA01
comme tablespace permanent et TEMP comme tablespace temporaire. Assurez-vous
également que Ali peut se connecter et créer, dans les tablespaces DATA01 et INDX01,
des objets dont la taille peut atteindre un mégaoctet.
SQL> create user ali

identified by tunisie

default tablespace data01

temporary tablespace temp

quota 1M on data01

quota 1M on indx01;

2. Créez un utilisateur appelé "Salah" avec le mot de passe "Aicha". Attribuez-lui


DATA01 comme tablespace permanent et TEMP comme tablespace temporaire.
SQL> create user salah

identified by aicha

default tablespace data01

temporary tablespace temp;

Utilisateur créé.

Page 1|7
Atelier Administration Bases de Données

3. Copiez la table commandes à partir du schéma SYSTEM dans le compte Salah : (Salah
requiert un quota sur son tablespace par défaut avant de pouvoir créer des objets dans
son schéma, attribuez-lui le quota UNLIMITED sur le tablespace DATA01) :

SQL> alter user salah quota unlimited on data01;

SQL> create table salah.commandes as select * from system.commandes;

4. A partir du dictionnaire de données, affichez les informations sur Ali et Salah (Affichez
les colonnes username, default_tablespace et temporary_tablespace de la vue
DBA_USERS) :
SQL> col username for a8

SQL> col default_tablespace for a15

SQL> col temporary_tablespace for a15

SQL> select username, default_tablespace, temporary_tablespace

from dba_users where username in ('ALI','SALAH');

5. A partir du dictionnaire de données, affichez les informations sur la quantité d’espace


disponibledanslestablespacesdeAli :(utilisezlescolonnes
TABLESPACE_NAME,USERNAME,BYTES,MAX_BYTES et BLOCKS de la vue dba_ts_quotas)
SQL> select TABLESPACE_NAME,USERNAME,BYTES,MAX_BYTES,BLOCKS

from dba_ts_quotas

where username='ALI';

6. Connectez-vous en tant qu’utilisateur Ali, changez son tablespace temporaire. Que se


passe-t-il ? Pourquoi ?
SQL> grant connect to ali;

SQL> connect ali/tunisie

SQL> alter user ali temporary tablespace data01;

ERREUR à la ligne 1 :

ORA-01031: privilèges insuffisants

Ali n'est pas un administrateur (DBA), la seule chose qu'il peut modifier c'est son mot
de passe.
7. En tant qu’utilisateur Ali, changez son mot de passe en « Tennis ».
SQL> alter user ali identified by tennis;

8. En tant qu’utilisateur System, supprimez le quota de Ali sur son tablespace par défaut.
SQL> connect system/votre_mot_de_passe

SQL> alter user ali quota 0 on data01;

Page 2|7
Atelier Administration Bases de Données

9. Supprimez le compte Salah de la base de données. (Vous devez utiliser l’option


CASCADE, car Salah possède des tables).
SQL> drop user salah cascade;
10. Ali a oublié son mot de passe. Allouez lui le mot de passe "tempo" et obliger le à changer
son mot de passe à sa prochaine connexion.
SQL> alter user ali identified by tempo password expire;

Gestion des Privilèges

11. En tant que system, créez l’utilisateur Salah et donnez-lui la possibilité de se connecter
à la base de données et de créer des objets dans son schéma.
SQL> create user salah

identified by abcd

default tablespace data01

temporary tablespace temp

quota 1M on data01;

SQL> grant create session, create table to salah;

12. Connectez-vous en tant que Salah et créez des tables en utilisant le script ulcase1.sql, afin
de créer les tables emp et dept.
SQL> connect salah/abcd

SQL>start c:\dba\ulcase1.sql

13. En tant que system interrogez la table emp de Salah :


SQL> connect system/votre_mot_de_passe

SQL> select * from salah.emp;

14. En tant que system accordez à Ali le droit de sélectionner les données de la table emp de
salah. Testez ce droit (En tant que Ali, essayer d'afficher les données de table emp de Salah)

SQL> connect system/votre_mot_de_passe

SQL> grant select on salah.emp to ali;

SQL> connect Ali/tempo

SQL> select * from salah.emp;

15. Reconnectez-vous en tant que Salah et accordez à Ali la possibilité d’interroger des
données de la table emp de salah. Activez également la capacité pour Ali d’accorder aux
autres utilisateurs la possibilité de sélection. Examinez la vue DBA_TAB_PRIVS pour
visualiser les privilèges) :
SQL> connect Salah/abcd

Page 3|7
Atelier Administration Bases de Données

SQL> grant select on emp to ali with GRANT OPTION;


SQL> connect system/votre_mot_de_passe

SQL> select grantee, owner, table_name, grantor, privilege, grantable

from dba_tab_privs

where grantee='ALI';

16. Créez l’utilisateur Nadhem avec la possibilité de se connecter à la base de données :


SQL> create user nadhem identified by abcde;

SQL> grant create session to nadhem;

17. En tant que Ali, activez l’accès à Nadhem à la table emp de Salah :
SQL> connect ali/mot_de_passe_de_ali

SQL> grant select on salah.emp to nadhem;

18. En tant que Salah, supprimez le privilège de lecture de Ali sur la table emp :
SQL> connect salah/abcd

SQL> revoke select on emp from ali;

19. En tant que Nadhem, Consultez la table emp de salah. Que se passe-t-il ? Pourquoi ?
SQL> connect nadhem/abcde

SQL> select * from salah.emp;

select * from salah.emp

ERREUR à la ligne 1 :

ORA-00942: Table ou vue inexistante

Explication :

La suppression de privilèges produisant un effet de cascade, Nadhem qui avait reçu le privilège
de Ali, a perdu son privilège SELECT sur la table emp de Salah lorsque le privilège de Ali a
été supprimé à la question précédente.

20. En tant que SYS, Attribuez à Salah le privilège SYSOPER qui permet le démarrage et
l’arrêt de la base de données sans la possibilité d’en créer une nouvelle. Vérifiez le résultat
:
SQL> connect sys/votre_mot_de_passe as sysdba

SQL> grant sysoper to salah;

SQL> select * from v$pwfile_users;

Page 4|7
Atelier Administration Bases de Données

Page 5|7
Atelier Administration Bases de Données

Gestion des Rôles


21. Examinez la vue dba_sys_privs du dictionnaire et énumérez les privilèges système du rôle
RESOURCE :
SQL> select * from dba_sys_privs where grantee='RESOURCE';

22. Créez un rôle appelé DEV, permettant de créer une table, de créer une vue et de sélectionner
des données de la table emp de Salah :
SQL> create role dev;

SQL> grant create table, create view to dev;

SQL> connect salah/abcd

SQL> grant select on emp to dev;

23. Attribuez les rôles RESOURCE, CONNECT et dev à Ali, mais déterminez l’activation
automatique du rôle RESOURCE quand Ali se connecte.(utilisez la commande ALTER
USER pour spécifier le rôle par défaut)
SQL> connect system/votre_mot_de_passe

SQL> grant dev, resource, connect to ali;

SQL> alter user ali default role resource;

24. Accordez à Ali la possibilité de lire toutes les informations du dictionnaire de données.
(Attribuez à Ali le rôle SELECT_CATALOG_ROLE permettant de consulter les vue
commençant par DBA) :
SQL> grant select_catalog_role to ali;

25. Rendez le rôle CONNECT le rôle par défaut de Ali pour que ce dernier puisse ce connecter
:
SQL> alter user ali default role connect;

26. Connectez-vous en tant que Ali et énumérez les utilisateurs de la base de données
(consulter la vue DBA_USERS). Que se passe-t-il ? Pourquoi ? :
SQL> connect ali/ali

SQL> select username from dba_users;

ERREUR à la ligne 2 :

ORA-00942: Table ou vue inexistante

SQL> set role select_catalog_role;

SQL> select username from dba_users;

Page 6|7
Atelier Administration Bases de Données

27. En tant que Ali, activez tous les rôles accordés à Ali puis tentez de créer une vue emp_view
sur la table emp de Salah. Que se passe-t-il ?

SQL> connect ali/ali

SQL> set role all;

SQL> select * from session_roles;

SQL> create view emp_view as select * from salah.emp;

select * from salah.emp

ERREUR à la ligne 2 :

ORA-01031: privilèges insuffisants

ALI peut lire la table emp de Salah en utilisant le privilège SELECT_CATALOG_ROLE acquis par
le rôle DEV, mais un privilège obtenu via un rôle ne peut pas être utilisé pour créer des vues.

Pour que ALI puisse créer la vue emp_view il faut que Salah lui donne explicitement le droit Select
sur sa table emp comme suit :

SQL> connect salah/abcd

SQL> grant select on emp to ali;

SQL> connect ali/ali

SQL> set role all;

SQL> create view emp_view as select * from salah.emp;

Vue créée.

Page 7|7

Vous aimerez peut-être aussi