BASES DE DONNÉES – Administration - Droits - Dictionnaire - page 1/4 - Bertrand LIAUDET
Bases de données Gestion des utilisateurs
Corrigé du TP Bertrand LIAUDET
Exercices
Connexion root@localhost
1. Ouvrez une console (cmd).
2. Ouvrez un client mysql « root » à partir de la console.
Mysql –u root
3. Afficher votre profil de connexion et votre identité effective.
Select current_user(), user() ;
4. Affichez les databases auxquelles vous avez accès.
Show databases
5. Affichez les droits de l’utilisateur connecté.
show grants
6. Affichez la liste de tous les utilisateurs.
Select host, user from mysql.user ;
7. Supprimez tous les utilisateurs sauf root@localhost.
Drop user nomUser@nomHote;
Attention : les utilisateurs installés par défaut dans les versions 5.7 et 8.0 ne doivent pas être supprimés.
Création root@’%’
8. Créer un utilisateur root pouvant se connecter de n’importe quelle machine (on utilisera
‘%’) avec pour mot de passe ‘root’
Create user root@’%’ identified by ‘root’
9. Donner tous les droits à cet utilisateur.
GRANT all privileges ON *.* TO root@’%’;
10. Affichez les droits de cet utilisateur
show grants for root@’%’;
11. Consultez les droits des utilisateurs dans l’interface graphique.
Connexion root@maMachine
12. Dans une console, affichez le nom de l’hôte de votre machine ainsi que son adresse IP
BASES DE DONNÉES – Administration - Droits - Dictionnaire - page 2/4 - Bertrand LIAUDET cmd /k ipconfig /all
13. Ouvrez un client mysql « root » en précisant le nom de l’hôte de votre machine
Mysql –u root –h maMachine Mysql –u root –h 10.0.0.55
14. Connectez-vous sur la machine de votre voisin
Mysql –u root –h laMachineDeMonVoisin
15. Afficher votre profil de connexion et votre identité effective.
Select current_user(), user() ;
16. Affichez les databases auxquelles vous avez accès.
Show databases
Création de toto@’%’
17. Vous êtes connecté root@maMachine. Créez un utilisateur « toto » qui puisse se connecter de n’importe quelle machine, sans mot de passe, avec la commande CREATE USER.
Create user toto@’%’;
18. Ouvrez un client mysql « toto »
Mysql –u toto
19. Affichez les databases ; affichez les droits de « toto ». Que constatez-vous ?
Show databases
On constate qu’on a accès qu’à information schéma.
Donnez des droits à toto@’%’
20. Vous êtes connecté root@maMachine. Donnez tous les droits sur la base « biblio » à
« toto ». Que constatez-vous ?
GRANT all privileges ON biblio.* TO toto@’%’;
On constate qu’on ne peut pas le faire : en effet, root@maMachine n’a pas reçu le « grant option ».
21. Vous êtes connecté root@localhost. Donnez tous les droits sur la base « biblio » à « toto ».
Que constatez-vous ?
GRANT all privileges ON biblio.* TO toto@’%’;
On constate que ça marche
22. Ouvrez un client mysql « toto »
Mysql –u toto
23. Affichez les droits de « toto ».
show grants
24. Affichez les databases de « toto ».
Show databases
25. Affichez les tables de la database « biblio » de « toto ».
Use biblio
Show tables biblio
Consultation du dictionnaire
26. Affichez le nombre de lignes des tables de la BD biblio à partir de la BD information_schema. On utilisera la table « tables ». L’attribut « table_rows » donne le
BASES DE DONNÉES – Administration - Droits - Dictionnaire - page 3/4 - Bertrand LIAUDET
nombre de ligne. L’attribut « table_schema » donne le nom de la BD. L’attribut
« table_name » donne le nom de la table.
Select table_schema, table_name, table_rows from information_schema.tables
where table_schema=’biblio’;
27. Affichez les attributs des tables de la BD biblio à partir de la BD information_schema. On utilisera la table « columns ».
28. Créer la procédure qui simule le « desc ».
Mot de passe
29. Vous êtes connecté root@localhost. Donnez un mot de passe à l’utisateur « toto » (on peut utiliser le « set password for»)
Solution propre, depuis la 5.7 :
ALTER USER toto@’%’ identified by ‘motdepasse’;
Versions 5.5 et 5.6 : utilisation d’une fonction PASSWORD
Set password for toto@’%’ = PASSWORD(‘motdepasse’);
Versions 5.7 et 8.0
Set password for toto@’%’ = ‘motdepasse’;
Il n’y a plus de fonction PASSWORD
30. Vérifier le mot de passe en vous connectant en tant que « toto ».
Utilisateurs avec des droits spécifiques
31. Dans la BD biblio, créez une vue « dispo » avec les livres et leurs disponibilités. S’ils sont disponibles, on écrira « disponible », s’ils ne sont pas disponibles, on écrira « retour dans X jours », avec ou sans « s » à jour.
32. Créez deux utilisateurs : adhèrent et bibliothécaire pouvant se connecter de partout.
33. Donnez des droits de consultation de la vue « dispo » aux adhérents ; Vérifiez les droits des adhérents.
34. Donnez des droits de consultation de toutes les tables de la BD biblio aux bibliothécaires ainsi que des droits de consultation, d’insertion sur les tables des emprunts, et des adhérents ; Vérifiez les droits des adhérents.
35. Connectez-vous comme adhérent puis comme bibliothécaire et vérifiez les « select » possibles.
Connexion à distance
36. Essayer de vous connecter sur la machine de votre voisin : en tant que « adherent » et en tant que « bibliothécaire ».
37. Afficher votre profil de connexion et votre identité effective.
38. Affichez vos droits.
39. Affichez les databases auxquelles vous avez accès.
40. Affichez les tables auxquelles vous avez accès dans les databases.
41. Essayez de faire des consultations, du DML, du DDL.
BASES DE DONNÉES – Administration - Droits - Dictionnaire - page 4/4 - Bertrand LIAUDET
Vous avez perdu le mot de passe de root !
42. Vous avez perdu vos mots de passe ! Eteignez et redémarrer le serveur de façon à pouvoir vous reloguer. Quelles options devez-vous utiliser ?
mysqld --skip-grant-tables --skip-net-working
43. Connectez-vous à partir du serveur non protégé. Affichez l’identité et le profil de connexion. Que constatez-vous ?
mysql –uroot
Select current_user(), user() ;
Le user est root@’’, le current_user ‘’@’’ : n’importe qui peut se connecter et accède à tout ! 44. Changez le password de root.
UPDATE mysql.user
SET password = PASSWORD(‘ok’) WHERE User=’root’;
On peut constater que la commande « set password » n’est pas accessible en mode « skip- grant-table »