Accueil > Manip’s > MySQL > Sémantique des Options pour MySql (le pourquoi des — 2 tirets (...)
Sémantique des Options pour MySql (le pourquoi des — 2 tirets ?)
jeudi 27 décembre 2007, par
Vous connaissez cet adage de l’école primaire
- Construire une phrase =
-Sujet + Verbe + Complément
Exemple :
Je + Roule + à Vélo
En langage informatique (sémantique)
- Le Sujet s’appelle => L’Objet
- Le Verbe s’appelle => L’Action
- Le Complément s’appelle => l’Argument
- Et la phrase devient une => Ligne de commande
Phrase | Ligne de commande |
Sujet | Objet |
Verbe | Action |
Complément | Argument |
Dans la Sémantique Informatique mySql la Phrase (ligne de commande)
- Commence toujours par le Verbe (Action)
- Suivent dans un ordre variable :
-
- L’Objet qui est l’argument noble
-
- Et les arguments secondaires encore appelés Options
Pour différencier l’Objet de son ou de ses Options
- L’option est préfixée par un ou deux tirets
ROULER MOI - -VELO (2 tirets)
Deux tirets —option annoncent une option longue.
Un seul tiret -o annonce une option courte.
L’informatique étant une science de fainéant :
- L’option Courte est un raccourci de l’option Longue
Par exemple
ROULER MOI —VELO (2 tirets = complet)
Est équivalent :
ROULER MOI -V (1 tiret = abrégé)
Par convention on admet que V veut dire vélo et pas Voiture
On pourrait même admettre que :
- -v signifie "Petit v = Vélo"
- Et -V signifie "Grand V = Voiture"
Imaginons que j’ai un vélo rouge et un vélo bleu
Je peux toujours utiliser indifféremment les 2 types d’options
ROULER MOI —VELO=rouge (2 tirets = complet)
Est équivalent à :
ROULER MOI -Vrouge (1 tiret = abrégé)
- On remarque que
-
- Pour l’option longue :
-
-
- La valeur de l’argument est annoncée par un signe égal (=)
-
-
- Pour l’option abrégée
-
-
- La valeur de l’argument est placé directement derrière la lettre clef sans espace
-
Application à l’ouverture d’une Base Mysql
Soit une base de donnée mySQL mabase
- Je veux l’ouvrir
Pour l’ouvrir il me faut 2 arguments :
- Nom d’utilisateur=root
- Mot de passe=123
Commande longue :
mysql —user=root —password=123 mabase
Commande Courte équivalente :
mysql -uroot -p123 mabase
Pourquoi ne pas laisser d’espace en mode court ?
On peut toujours laisser un espace entre l’argument et sa valeur
Mais dans la commande
- mysql -uroot -p 123 mabase
-
- 123 est il le nom de la base ou le mot de passe ?
Comment faire pour ne pas dévoiler un mot de passe ?
En laissant la valeur vide, elle sera demandée à l’exécution :
Mode long :
mysql —user=root —password mabase
Mode Court :
mysql —uroot -p mabase
Comment injecter un mot de passe vide ?
La plupart du temps le serveur mySQL est installé par défaut avec un mot de passe vide
On voudrait donc se connecter directement sans valider un mot de passe qui n’existe pas.
- Cela n’est possible qu’en mode long (c’est donc un de ses avantages)
mysql —user=root —password= mabase
Signe = suivi d’un espace
EN CONCLUSION
Pour la plupart des options les 2 modes sont strictement équivalents
- Et se substituent parfaitement l’un à l’autre
Quand il trouve UN SEUL TIRET, l’interpréteur sait :
- qu’il ne devra chercher QU’UNE SEULE LETTRE comme argument
- Puis analyser sa valeur jusqu’au prochain espace
Quand il en trouve 2 :
- Il sait qu’il va devoir analyser une véritable ligne de commande, contenant une ou plusieurs instructions chainées par des tirets simples (—disable-column-names)
- Et jusqu’au prochaine espace.
Exemple :
ROULER MOI —VELO-cadre-couleur=rouge ;
Si l’on peut donc utiliser sans souci la Syntaxe courte en ligne de commande
Il semble plus rigoureux d’utiliser sa version longue, plus précise et plus explicite en mode fichier Batch.sql
- —password ou —host étant beaucoup plus parlants pour la maintenance que -p ou -h