Services webmasters
Partenaires
Jeux concours gratuits
 
Présentation des scripts serveurs et utilitaires
<<<
mysql , l'outil en ligne de commande mysqladmin , administrer un serveur MySQL
>>>

4.8 MySQL Scripts clients et utilitaires
4 Administration du serveur
 Manuel de Référence MySQL 4.1 : Version Française

Présentation des scripts serveurs et utilitaires
->mysql , l'outil en ligne de commande
mysqladmin , administrer un serveur MySQL
Utiliser mysqlcheck pour l'entretien et la réparation
mysqldump , exporter les structures de tables et les données
mysqlhotcopy , copier les bases et tables MySQL
mysqlimport , importer des données depuis des fichiers texte
Afficher les bases, tables et colonnes
perror , expliquer les codes d'erreurs
Comment exécuter des commandes SQL depuis un fichier texte

4.8.2 mysql , l'outil en ligne de commande

mysql est un simple script SQL (qui exploite GNU readline ). Il supporte une utilisation interactive et non-interactive. Lorsqu'il est utilisé interactivement, les résultats des requêtes sont présentés sous la forme d'une table au format ASCII. Lorsqu'il est utilisé non-interactivement, par exemple, comme filtre, le résultat est fourni au format de liste avec séparation par tabulation (le format d'affichage peut être modifié en utilisant les options de ligne de commande). Vous pouvez exécuter le script comme ceci :

shell> mysql database < script.sql > output.tab
Si vous avez des problèmes liés à des insuffisances de mémoire avec le client, utilisez l'option --quick ! Cela force mysql à utiliser mysql_use_result() plutôt que mysql_store_result() pour lire les résultats.Utiliser mysql est très simple. Il suffit de le démarrer comme ceci : mysql database ou mysql --user=user_name --password=your_password database . Tapez une commande SQL, puis terminez-la avec ';' , '\g' ou '\G' , et finissez avec Entrée.

mysql supports the following options:

    -?, --help
    Affiche cette aide et quitte.

    -A, --no-auto-rehash
    Pas de rehachage automatique. Il faut utiliser la commande 'rehash' pour obtenir la complétion des noms de tables et champs. Cela accélère le démarrage du client.

    --prompt=...
    Modifie l'invite de commande de MySQL.

    -b, --no-beep
    Eteind le son d'erreur.

    -B, --batch
    Affiche les résultats avec une tabulation comme résultat, et chaque ligne avec une nouvelle ligne. N'utilise pas l'historique.

    --character-sets-dir=...
    Le dossier où les jeux de caractères sont créés.

    -C, --compress
    Utilise la compression avec le protocole client-serveur.

    -#, --debug[=...]
    Démarre le log de débogage. Par défaut, il vaut 'd:t:o,/tmp/mysql.trace'.

    -D, --database=...
    La base de données à utiliser. C'est particulièrement pratique dans le fichier d'options my.cnf .

    --default-character-set=...
    Configure le jeu de caractères par défaut.

    -e, --execute=...
    Exécute une commande et quitte. Le résultat est au format de l'option --batch

    -E, --vertical
    Affiche le résultat d'une requête verticalement. Sans cette option, vous pouvez aussi obtenir ce format en terminant votre requête avec \G .

    -f, --force
    Continue même si vous obtenez une erreur SQL.

    -g, --no-named-commands
    Les commandes nommées sont désactivées. Utilisez la forme \* uniquement, ou utilisez les commandes nommées au début d'une ligne se terminant par un point-virgule ( ';' ). Depuis la version 10.9, le client démarre avec cette option activée par défaut. Avec l'option -g, le format long des commandes va continuer à fonctionner.

    -G, --enable-named-commands
    Les commandes nommées sont activées . Le format long est autorisé, ainsi que les commandes courtes \*.

    -i, --ignore-space
    Ignore les espaces après les noms de fonctions.

    -h, --host=...
    Connexion avec l'hôte indiqué.

    -H, --html
    Produit un résultat au format HTML.

    -X, --xml
    Produit un résultat au format XML.

    -L, --skip-line-numbers
    N'écrit pas les numéros de lignes dans les erreurs. Très pratique lorsque vous voulez comparer des résultats qui incluent des messages d'erreurs.

    --no-pager
    Désactive le système de page, et affiche directement dans la sortie standard. Voyez l'aide interactive (\h).

    --no-tee
    Désactive le outfile. Voyez l'aide interactive (\h).

    -n, --unbuffered
    Vide le buffer de requête après chaque requête.

    -N, --skip-column-names
    N'écrit pas les noms de colonnes dans les résultats.

    -O, --set-variable var=option
    Spécifie la valeur d'une variable. --help liste toutes ces variables. Notez bien que --set-variable est obsolète depuis MySQL 4.0, et qu'il suffit désormais d'utiliser --var=option .

    -o, --one-database
    Ne modifie que la base par défaut. C'est pratique pour éviter les modifications dans les autres bases dans le fichier de log.

    --pager[=...]
    Type d'affichage. Par défaut, la variable d'environnement ENV vaut PAGER . Les paginateurs valides sont less, more, cat [> filename], etc. Voyez l'aide interactive (\h). Cette option n'est pas effective en mode batch. Les paginateurs ne fonctionnent qu'avec Unix.

    -p[password], --password[=...]
    Le mot de passe utilisé lors de la connexion sur le serveur. S'il n'est pas donné en ligne de commande, il sera demandé interactivement. Notez que si vous utilisez la forme courte -p , vous ne devez pas laisser d'espace entre l'option et le mot de passe.

    -P --port=...
    Le numéro de port TCP/IP pour la connexion.

    -q, --quick
    Ne met pas en cache le résultat, et l'affiche ligne par ligne. C'est plus lent pour le serveur, si le résultat est interrompu. N'utilise pas le fichier d'historique.

    -r, --raw
    Ecrit les valeurs des colonnes sans les conversions de protections. Utilisé en mode --batch

    -s, --silent
    Mode très silencieux.

    -S --socket=...
    Le fichier de socket à utiliser pour la connexion.

    -t --table
    Affichage au format de table. C'est le mode par défaut pour le mode non-batch.

    -T, --debug-info
    Affiche des informations de débogage au moment de la fin du programme.

    --tee=...
    Ajoute tout dans le fichier de sortie. Voyez l'aide interactive (\h). Ne fonctionne pas en mode batch.

    -u, --user=#
    Nom d'utilisateur pour la connexion, si ce n'est pas l'utilisateur Unix courant.

    -U, --safe-updates[=#], --i-am-a-dummy[=#]
    N'autorise que les commandes UPDATE et DELETE qui utilisent des clés. Voir plus bas pour des informations sur cette option. Vous pouvez annuler cette option si vous l'avez dans le fichier d'option my.cnf en utilisant la syntaxe --safe-updates=0 .

    -v, --verbose
    Affichage plus détaillé (-v -v -v indique le format d'affichage de table).

    -V, --version
    Affiche la version et quitte.

    -w, --wait
    Attend et retente si la connexion s'interrompt, au lieu de quitter.
Vous pouvez aussi spécifier les variables suivantes avec l'option -O ou --set-variable ; notez bien que --set-variable est obsolète depuis MySQL 4.0, utilisez la nouvelle syntaxe --var=option :
Nom de variable Par défaut Description
connect_timeout 0 Nombre de secondes avant que la connexion n'expire.
max_allowed_packet 16777216 Taille maximale du paquet de communication avec le serveur.
net_buffer_length 16384 Buffer pour les communications TCP/IP et socket.
select_limit 1000 Limite automatique pour les commandes SELECT avec l'option --i-am-a-dummy
max_join_size 1000000 Limite automatique pour les commandes de jointure avec l'option --i-am-a-dummy.

Si vous tapez 'help' en ligne de commande, mysql va afficher les commandes qu'il supporte :


mysql> help

MySQL commands:
help    (\h)    Display this text.
?       (\h)    Synonym for `help'.
clear   (\c)    Clear command.
connect (\r)    Reconnect to the server.
                Optional arguments are db and host.
edit    (\e)    Edit command with $EDITOR.
ego     (\G)    Send command to mysql server,
                display result vertically.
exit    (\q)    Exit mysql. Same as quit.
go      (\g)    Send command to mysql server.
nopager (\n)    Disable pager, print to stdout.
notee   (\t)    Don't write into outfile.
pager   (\P)    Set PAGER [to_pager].
                Print the query results via PAGER.
print   (\p)    Print current command.
prompt  (\R)    Change your mysql prompt.
quit    (\q)    Quit mysql.
rehash  (\#)    Rebuild completion hash.
source  (\.)    Execute a SQL script file.
                Takes a file name as an argument.
status  (\s)    Get status information from the server.
tee     (\T)    Set outfile [to_outfile].
                Append everything into given outfile.
use     (\u)    Use another database.
                Takes database name as argument.
La commande pager ne fonctionne que sous Unix.

La commande status donne des détails sur la connexion et le serveur utilisés. Si vous fonctionnez en mode --safe-updates , status va aussi afficher les valeurs des variables de mysql qui affectent vos requêtes.

Une option de démarrage utile pour les débutants (introduit en MySQL version 3.23.11) est --safe-updates (ou --i-am-a-dummy pour les utilisateurs qui ont déjà utilisé une commande DELETE FROM table_name mais on oublié la clause WHERE . Lorsque vous utilisez cette option, mysql envoie la commande suivante au serveur MySQL lors de l'ouverture de la connexion :

SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=#select_limit#,
    SQL_MAX_JOIN_SIZE=#max_join_size#"
#select_limit# et #max_join_size# sont des variables qui peuvent être configurées depuis mysql . Syntaxe de SET .L'effet de la commande ci-dessus est :
  • Vous n'êtes pas autorisé à faire une commande UPDATE ou DELETE si vous n'avez pas de contrainte de clé dans la clause WHERE . Il est possible toutefois de forcer la commande UPDATE/DELETE en utilisant LIMIT :
    
    UPDATE table_name SET not_key_column=# WHERE not_key_column=# LIMIT 1;
    
  • Tous les grands résultats sont automatiquement limités à #select_limit# lignes.
  • Les commandes SELECT qui vont probablement devoir examiner plus de #max_join_size lignes seront annulées.
Quelques conseils pratiques sur le client mysql :Certaines données seront plus faciles à lire lorsqu'affichées verticalement, au lieu d'horizontalement. Par exemple, des textes longs qui incluent des nouvelles lignes. Il sera alors plus facile de les lire verticalement.

mysql> SELECT * FROM mails WHERE LENGTH(txt) < 300 lIMIT 300,1\G
*************************** 1. row ***************************
  msg_nro: 3068
     date: 2000-03-01 23:29:50
time_zone: +0200
mail_from: Monty
    reply: monty@no.spam.com
  mail_to: "Thimble Smith" <tim@no.spam.com>
      sbj: UTF-8
      txt: >>>>> "Thimble" == Thimble Smith writes:

Thimble> Hi.  I think this is a good idea.  Is anyone familiar with UTF-8
Thimble> or Unicode? Otherwise, I'll put this on my TODO list and see what
Thimble> happens.

Yes, please do that.

Regards,
Monty
     file: inbox-jani-1
     hash: 190402944
1 row in set (0.09 sec)
Pour les logs, vous pouvez utiliser l'option tee . Le tee peut être démarré avec l'option --tee=... , ou depuis la ligne de commande interactive avec la commande tee . Toutes les données affichées sur l'écran seront enregistrées dans un fichier spécifié. Cela peut être très utile pour pouvoir déboguer. Le tee peut être désactivé avec la commande en ligne notee . Exécuter tee plusieurs fois va redémarrer l'enregistrement. Sans paramètre, la commande va ouvrir le dernier fichier utilisé. Notez que tee va écrire les données après chaque requête, avant que l'invite apparaisse, pour attendre la prochaine commande.Afficher les résultats en mode interactif avec les programmes Unix tels que less, more ou tout autre programme similaire est actuellement possible avec l'option --pager[=...] . Sans argument, le client mysql va rechercher la variable d'environnement PAGER et l'utiliser pour pager . pager peut être démarré en ligne de commande avec pager et désactivée avec nopager . La commande prend un argument optionnel et pager prendra alors cette valeur. La commande pager peut être appelée sans argument, mais cela impose que l'option --pager ait été utilisée, ou que le mode pager sera par défaut la sortie standard. pager fonctionne uniquement sous Unix, car il utilise la fonction popen(), qui n'existe pas sous Windows. Sous Windows, l'option tee peut être utilisée à la place, même si elle n'est pas aussi pratique que pager dans certaines situations.Quelques conseils sur pager :
  • Vous pouvez l'utiliser pour écrire dans un fichier :
    
    mysql> pager cat > /tmp/log.txt
    
    et les résultats iront directement dans le fichier. Vous pouvez aussi passer des options pour le programme que vous voulez utiliser comme pager :
    
    mysql> pager less -n -i -S
    
  • Dans la présentation ci-dessus, notez bien l'option '-S'. Vous pourriez la trouver très pratique lorsque vous étudiez des résultats : essayer l'option d'affichage horizontal (validez vos commandes avec '\g' ou ';') et vertical (terminez vos commandes avec '\G'). Parfois, un résultat très large est difficile à lire et avec l'option -S dirigée vers less, vous pouvez naviguer dans le résultat interactivement de droite à gauche, ce qui évite que les lignes les plus longues soient coupées. Cela rend la lecture du texte bien plus facile. Vous pouvez passer d'un mode à l'autre depuis la ligne de commande. Voyez l'aide pour plus de détails sur less.
  • Vous pouvez combiner des méthodes très complexes pour gérer les résultats, comme, la possibilité d'envoyer les résultats vers deux fichiers dans deux dossiers différents, ou deux disques différents, tout en affichant les résultats à l'écran avec less :
    
    mysql> pager cat | tee /dr1/tmp/res.txt | \
    tee /dr2/tmp/res2.txt | less -n -i -S
Vous pouvez aussi combiner les deux fonctions ci-dessus : activer le tee , spécifier le pager 'less' et vous serez capable de naviguer dans les résultats avec le less Unix, tout en enregistrant tous les résultats dans un fichier. La différence entre le tee d'Unix utilisé avec le pager et le tee intégré du client mysql , est que le tee intégré fonctionne même si vous n'avez pas de tee Unix disponible. Le tee enregistre tout ce qui est affiché à l'écran, alors que le tee Unix utilisé avec pager n'en note pas autant. Enfin, le tee interactif est plus facile à activer et désactiver, lorsque vous souhaitez enregistrer un résultat dans un fichier, mais que vous voulez désactiver cette fonctionnalité à d'autres moments.

Depuis MySQL version 4.0.2, il est possible de modifier l'invite de commande de mysql .

Vous pouvez utiliser les options de prompt suivantes :
Option Description
\v version de mysqld
\d database en cours
\h hôte MySQL
\p port de connexion
\u nom d'utilisateur
\U Identifiant complet username@host
\\ '\'
\n nouvelle ligne
\t tabulation
\ espace
\_ espace
\R heure 24h (0-23)
\r heure 12h (1-12)
\m minutes
\y année sur deux chiffres
\Y année sur quatre chiffres
\D format de date complet
\s secondes
\w jour de la semaine en trois lettres (Mon, Tue, ...)
\P am/pm
\o mois au format numérique
\O mois en trois lettres (Jan, Feb, ...)
\c compteur du nombre de commande

'\' suivi de n'importe quelle lettre représente la lettre littéralement.

Vous pouvez modifier l'invite de commande comme ceci :
    Environment Variable
    Vous pouvez utiliser la variable d'environnement MYSQL_PS1 , en lui donnant la chaîne d'invite. Par exemple :
    
    shell> export MYSQL_PS1="(\u@\h) [\d]> "
    
    my.cnf
    .my.cnf
    Vous pouvez configurer l'invite de commandes dans le fichier d'options MySQL. dans le groupe mysql . Par exemple :
    
    [mysql]
    prompt=(\u@\h) [\d]>\_
    Command Line
    Vous pouvez utiliser l'option de démarrage --prompt en ligne de commande avec mysql . Par exemple :
    
    shell> mysql --prompt="(\u@\h) [\d]> "

    (user@host) [database]>
    Interactively
    Vous pouvez aussi utiliser la commande prompt (ou \R ) depuis le client pour modifier interactivement l'invite de commande. Par exemple :
    
    mysql> prompt (\u@\h) [\d]>\_
    PROMPT set to '(\u@\h) [\d]>\_'
    (user@host) [database]>
    (user@host) [database]> prompt
    Returning to default PROMPT of mysql>
    mysql>

<< mysql , l'outil en ligne de commande >>
Présentation des scripts serveurs et utilitaires MySQL Scripts clients et utilitaires mysqladmin , administrer un serveur MySQL
Services webmasters
Les manuels
 
CoursPHP.com - Reproduction interdite -