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';"