52 lines
1.8 KiB
YAML
52 lines
1.8 KiB
YAML
|
|
id: 07-sql
|
||
|
|
titre: Interroger une base MariaDB
|
||
|
|
niveau: intermediaire
|
||
|
|
duree_min: 50
|
||
|
|
formations: [nsi-tle, stmg-sig, bts-sio-slam, bts-sio-sisr, but-info]
|
||
|
|
competences: [sql-select, jointures, ddl, droits-sgbd]
|
||
|
|
|
||
|
|
reseaux:
|
||
|
|
- nom: isole
|
||
|
|
cidr: 10.0.0.0/24
|
||
|
|
|
||
|
|
machines:
|
||
|
|
- nom: bdd
|
||
|
|
image: paillasse-debian
|
||
|
|
flavor: eleve.petit
|
||
|
|
reseaux: [isole]
|
||
|
|
preparation: "systemctl enable --now mariadb && mysql < /opt/labs/07/lycee.sql"
|
||
|
|
|
||
|
|
consignes:
|
||
|
|
- "La base `lycee` contient les tables eleves, classes et notes. Explore-la."
|
||
|
|
- "Crée la vue `moyennes` qui donne, pour chaque élève, son pseudonyme et sa moyenne."
|
||
|
|
- "Crée la table `clubs` (id clé primaire auto-incrémentée, nom texte non nul) et insère au moins 3 clubs."
|
||
|
|
- "Crée l'utilisateur `prof` qui peut seulement lire (SELECT) la base lycee."
|
||
|
|
|
||
|
|
verifications:
|
||
|
|
- id: vue
|
||
|
|
titre: Vue moyennes
|
||
|
|
machine: bdd
|
||
|
|
commande: "mysql -N -e 'SELECT COUNT(*) FROM lycee.moyennes' | grep -Eq '^[1-9]'"
|
||
|
|
attendu: { code_retour: 0 }
|
||
|
|
points: 3
|
||
|
|
message_echec: "La vue lycee.moyennes n'existe pas ou est vide."
|
||
|
|
- id: table
|
||
|
|
titre: Table clubs remplie
|
||
|
|
machine: bdd
|
||
|
|
commande: "test \"$(mysql -N -e 'SELECT COUNT(*) FROM lycee.clubs')\" -ge 3"
|
||
|
|
attendu: { code_retour: 0 }
|
||
|
|
points: 2
|
||
|
|
message_echec: "La table lycee.clubs n'existe pas ou contient moins de 3 lignes."
|
||
|
|
- id: droits
|
||
|
|
titre: Utilisateur prof en lecture seule
|
||
|
|
machine: bdd
|
||
|
|
commande: "mysql -N -e \"SHOW GRANTS FOR 'prof'@'localhost'\" | grep -q 'GRANT SELECT ON `lycee`'"
|
||
|
|
attendu: { code_retour: 0 }
|
||
|
|
points: 2
|
||
|
|
message_echec: "L'utilisateur prof n'a pas exactement le droit SELECT sur lycee."
|
||
|
|
|
||
|
|
indices:
|
||
|
|
- "SHOW TABLES; puis DESCRIBE eleves;"
|
||
|
|
- "CREATE VIEW moyennes AS SELECT … JOIN … GROUP BY …;"
|
||
|
|
- "GRANT SELECT ON lycee.* TO 'prof'@'localhost';"
|