Partie I
SQL de base
172
© Éditions Eyrolles
Ne confondez pas suppression de tous les droits d’un accès et suppression de l’utilisateur. Par
analogie, les politiciens qui se voient retirer le droit de vote ne sont pas encore guillotinés (que
je sache). Énervons-nous contre Jules :
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'Jules'@'localhost';
Attributions et révocations « sauvages »
Le caractère open de MySQL fait des fois bien les choses, mais, dans ce cas précis, je ne
trouve pas. Ici mon billet d’humeur conteste la possibilité qui est donnée de modifier les
cinq tables de la base mysql pour affecter tantôt un 'N' par-ci, tantôt un 'Y' par-là, ou encore
pour mettre à jour un SET contenant SELECT par exemple, etc. Bref, un UPDATE raté, un
INSERT dans la mauvaise colonne, un DELETE sans WHERE, et vous mettez une panique noire
(comme la couleur par défaut de l’interface de commande) dans vos bases. Vous pouvez vousmême empêcher toute connexion (même celle du root).
Sous Oracle, les commandes GRANT et REVOKE mettent à jour des tables système que vous
pouvez interroger, mais que vous ne pouvez pas modifier. C’est heureux.
En conclusion, je ne décrirai aucune de ces manipulations, d’abord parce que je n’ai pas envie
de me tromper en faisant des tests et bouleverser ainsi inutilement ma configuration. Ensuite
parce si vous voulez « bidouiller », allez consulter des sites Web ou d’autres ouvrages qui
recopient la documentation sans quelquefois changer ni tester les exemples, vous m’en direz
des nouvelles.
Vous voulez donner des droits : utilisez GRANT ; les reprendre : utilisez REVOKE, car :
• Ils sont programmés précisément pour ça.
• Les deux instructions sont dans la norme SQL.
Ne pas les employer, c’est comme acheter une quatre cylindres chez BMW (le motoriste est
spécialiste des six en ligne) et verser en cachette du colza dans le réservoir chez l’agriculteur
du coin en croyant économiser.
La seule utilisation acceptable, parce qu’on n’a pas le choix de faire autrement, concerne la
mise à jour de la table mysql.host (décrite dans la section suivante). À configuration avancée, programmeur averti.
Accès distants
La figure suivante illustre la configuration de mon test. Un client est en 192.168.4.173 sur
lequel sont installées les couches MySQL (Complete Package ou Essentials Package). Un
serveur est en 192.168.4.118 équipé de MySQL Complete Package. Sur le serveur, root crée
SQL de base
172
© Éditions Eyrolles
Ne confondez pas suppression de tous les droits d’un accès et suppression de l’utilisateur. Par
analogie, les politiciens qui se voient retirer le droit de vote ne sont pas encore guillotinés (que
je sache). Énervons-nous contre Jules :
REVOKE ALL PRIVILEGES, GRANT OPTION FROM 'Jules'@'localhost';
Attributions et révocations « sauvages »
Le caractère open de MySQL fait des fois bien les choses, mais, dans ce cas précis, je ne
trouve pas. Ici mon billet d’humeur conteste la possibilité qui est donnée de modifier les
cinq tables de la base mysql pour affecter tantôt un 'N' par-ci, tantôt un 'Y' par-là, ou encore
pour mettre à jour un SET contenant SELECT par exemple, etc. Bref, un UPDATE raté, un
INSERT dans la mauvaise colonne, un DELETE sans WHERE, et vous mettez une panique noire
(comme la couleur par défaut de l’interface de commande) dans vos bases. Vous pouvez vousmême empêcher toute connexion (même celle du root).
Sous Oracle, les commandes GRANT et REVOKE mettent à jour des tables système que vous
pouvez interroger, mais que vous ne pouvez pas modifier. C’est heureux.
En conclusion, je ne décrirai aucune de ces manipulations, d’abord parce que je n’ai pas envie
de me tromper en faisant des tests et bouleverser ainsi inutilement ma configuration. Ensuite
parce si vous voulez « bidouiller », allez consulter des sites Web ou d’autres ouvrages qui
recopient la documentation sans quelquefois changer ni tester les exemples, vous m’en direz
des nouvelles.
Vous voulez donner des droits : utilisez GRANT ; les reprendre : utilisez REVOKE, car :
• Ils sont programmés précisément pour ça.
• Les deux instructions sont dans la norme SQL.
Ne pas les employer, c’est comme acheter une quatre cylindres chez BMW (le motoriste est
spécialiste des six en ligne) et verser en cachette du colza dans le réservoir chez l’agriculteur
du coin en croyant économiser.
La seule utilisation acceptable, parce qu’on n’a pas le choix de faire autrement, concerne la
mise à jour de la table mysql.host (décrite dans la section suivante). À configuration avancée, programmeur averti.
Accès distants
La figure suivante illustre la configuration de mon test. Un client est en 192.168.4.173 sur
lequel sont installées les couches MySQL (Complete Package ou Essentials Package). Un
serveur est en 192.168.4.118 équipé de MySQL Complete Package. Sur le serveur, root crée
