BlueGEEK Journal

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 bluegyn_spip

- 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 :

  1. Nom d’utilisateur=root
  1. 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