| 8 MySQL Scripts clients et utilitaires
 Manuel de Référence MySQL 4.1 : Version Française
 
 . Présentation des scripts serveurs et utilitaires
 . myisampack , le générateur de tables MySQL compressées en lecture seule
 ->mysql , l'outil en ligne de commande
 . mysqladmin , administration d'un serveur MySQL
 . mysqlbinlog , Exécuter des requêtes dans le log binaire
 . mysqlcc , MySQL Control Center
 . Utiliser mysqlcheck pour l'entretien et la réparation
 . mysqldump , sauvegarde des 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
 . L'utilitaire de remplacement de chaînes replace
 
 
 | 
  8.3 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). 
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 :  
 
ou : Tapez une commande SQL, puis terminez-la avec  
';'
 ,  
'\g'
  ou  
'\G'
 ,
et finissez avec entrée.| 
shell> mysql --user=user_name --password=your_password db_name
 | 
 
Vous pouvez exécuter un script avec :
 mysql
  supporte les options suivantes :| 
shell> mysql db_name < script.sql > output.tab
 | 
 
Vous pouvez aussi spécifier les variables suivantes avec 
la syntaxe  
--var=option
  :
--help
, 
-?
      Affiche cette aide et quitte.
      
--batch
, 
_B
 
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=path
 
Le dossier où les jeux de caractères sont créés.
 Le jeu de caractères utilisé pour les données et le stockage .  
--compress
, 
_C
      Utilise la compression avec le protocole client / serveur.  
--database=db_name
, 
-D db_name
      La base de données à utiliser. C'est particulièrement pratique dans le fichier 
d'options  
my.cnf
 .
      
--debug[=debug_options]
, 
-# [debug_options]
 
Génère un log de débogage. La chaîne  
debug_options
  vaut souvent
 
'd:t:o,file_name'
 .
Par défaut, la valeur est  
'd:t:o,/tmp/mysql.trace'
 .
      
--debug-info
, 
-T
 
Affiche des informations de débogage lorsque le programme se termine.
      
--default-character-set=charset
 
Configure le jeu de caractères par défaut. 
 Le jeu de caractères utilisé pour les données et le stockage .
 
 
--execute=statement
, 
-e statement
      Exécute une commande et quitte. Le résultat est au format de l'option  
--batch
 .
 
 
--force
, 
f
      Continue même si vous recevez une erreur SQL.
      
--host=host_name
, 
-h host_name
 
Connexion avec l'hôte indiqué.
      
--html
, 
H
 
Produit un résultat au format HTML.
      
--ignore-space
, 
i
 
Ignore les espaces après les noms de fonctions.
L'effet de cette commande est décrit dans la discussion sur  
IGNORE_SPACE
  
de la section  Le mode SQL du serveur .
      
--local-infile[={0|1}]
 
Active ou désactive la possibilité d'utiliser la commande  
LOCAL
  pour 
 
LOAD DATA INFILE
 . Sans valeur, cette option active  
LOCAL
 . 
Elle peut être configuré avec  
--local-infile=0
  ou  
--local-infile=1
  pour
explicitement activer ou désactiver  
LOCAL
 . Activer  
LOCAL
  n'a pas d'effet
si le serveur ne le supporte pas de son coté.
      
--named-commands
, 
-G
 
Les commandes nommées sont  
activé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.
      
--no-auto-rehash
, 
-A
 
Pas de rehashage automatique. Cette option fait que  
mysql
  se lance plus
rapidement, mais vous devez utiliser la commande  
rehash
  si vous voulez 
utiliser la completion de nom de tables.
      
--no-beep
, 
-b
 
Ne fait pas de bip, lorsqu'une erreur survient.
      
--no-named-commands
, 
-g
 
Les commandes nommées sont désactivées. Utilisez uniquement la forme
 
\*
  ou bien utilisez les commandes nommées en début de ligne, et
terminez la avec un point-virgule ( 
';'
 ). Depuis MySQL 3.23.22,  
mysql
  
démarre avec cette option  
activée
  par défaut! Cependant, même si cette
avec cette option, les formats de commandes longues fonctionneront sur la première ligne.
      
--no-pager
 
Désactive le système de page, et affiche directement dans la sortie standard.
Plus de détails dans la section  Commandes 
mysql
 .
      
--no-tee
 
Désactive le fichier de sortie. Voyez l'aide interactive (\h).
Plus de détails dans la section  Commandes 
mysql
 .
      
--one-database
, 
O
 
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[=command]
 
Type d'affichage. Par défaut, la variable d'environnement  
ENV
  vaut  
PAGER
 . 
Les pagineurs valides sont  
less
 ,  
more
 ,  
cat [> filename]
 , etc.
Voyez l'aide interactive ( 
\h
 ). Cette option n'est pas fonctionnelle en mode batch. 
Les pagineurs ne fonctionnent qu'avec Unix. 
Plus de détails dans la section  Commandes 
mysql
 .
      
--password[=password]
,  
-p[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.
      
--port=port_num
,  
-P port_num
 
Le numéro de port TCP/IP pour la connexion.
      
--prompt=format_str
 
Modifie le format de l'invite de commandes ( 
prompt
 ). Par défaut,
c'est  
mysql>
 . Les séquences spéciales sont présentées
dans la section  Commandes 
mysql
 .
      
--protocol={TCP | SOCKET | PIPE | MEMORY}
 
Spécifie le protocole de connexion à utiliser. Nouveau en MySQL version 4.1.
      
--quick
, 
-q
 
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.
      
--raw
, 
-r
 
Ecrit les valeurs des colonnes sans les conversions de protections. Utilisé en
mode  
--batch
 
--reconnect
 
Si la connexion est perdue, essaie de se reconnecter automatiquement au
serveur, juste une fois. Pour supprimer la reconnexion automatique,
utilisez  
--skip-reconnect
 . Nouveau en MySQL 4.1.0.
      
--safe-updates
, 
--i-am-a-dummy
, 
-U
 
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
 .
Voyez la section  Conseils 
mysql
  pour plus d'informations sur
cette option.
      
--silent
, 
-s
 
Mode très silencieux.
      
----skip-column-names
, 
-N
 
N'écrit pas les noms de colonnes dans les résultats.
      
--skip-line-numbers
, 
-L
 
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.
      
--socket=path
, 
-S path
 
Le fichier de socket à utiliser pour la connexion.
      
--table
, 
-t
 
Affichage au format de table. C'est le mode par défaut pour le mode non-batch.
      
--tee=file_name
 
Ajoute tout dans le fichier de sortie. Voyez l'aide interactive (\h).
Ne fonctionne pas en mode batch. Cette option est détaillée dans 
 Commandes 
mysql
 .
      
--unbuffered
, 
-n
 
Vide le buffer de requête après chaque requête.
      
--user=user_name
, 
-u user_name
 
Nom d'utilisateur pour la connexion, si ce n'est pas l'utilisateur Unix courant.
      
--verbose
, 
-v
 
Affichage plus détaillé ( 
-v -v -v
  indique le format d'affichage de table).
      
--version
, 
-V
 
Affiche la version et quitte.
      
--vertical
, 
-E
 
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
 .
      
--wait
, 
-w
 
Attend et retente si la connexion s'interrompt, au lieu de quitter.
      
--xml
, 
-X
 
Affiche le résultat au format XML.
            
Il est aussi possible de configurer les variables en utilisant 
 
--set-variable=var_name=value
  ou la syntaxe  
-O var_name=value
 .
Cependant, cette syntaxe est obsolète depuis MySQL 4.0.
connect_timeout
      Nombre de secondes avant que la connexion n'expire.
Valeur par défaut : 0.
      
max_allowed_packet
      Taille maximale du paquet de communication avec le serveur.
Valeur par défaut : 16777216.
      
max_join_size
      Limite automatique pour les commandes de jointure avec l'option  
--i-am-a-dummy
 .
Valeur par défaut : 1 000 000 (un million).
      
net_buffer_length
      Buffer pour les communications TCP/IP et socket.
Valeur par défaut : 16 ko.
      
select_limit
      Limite automatique pour les commandes  
SELECT
  avec l'option  
--i-am-a-dummy
 
Valeur par défaut : 1000.
      
Sous Unix, le client  
mysql
  écrit l'historique des requêtes dans un fichier.
Par défaut, le fichier de requêtes s'appelle  
.mysql_history
 , et il
est créé dans votre dossier racine. Pour spécifier un fichier différent,
modifiez la variable d'environnement  
MYSQL_HISTFILE
 .
Si vous ne voulez pas entretenir un fichier d'historiques, supprimez
 
.mysql_history
  s'il existe, puis utiliser l'une des techniques suivantes : 
Donnez à  
MYSQL_HISTFILE
  la valeur de  
/dev/null
 . Pour que cela
soit pris en compte à chaque redémarrage, ajoutez cette ligne à votre 
script de démarrage.
Faites un lien symbolique depuis  
.mysql_histfile
  vers  
/dev/null
 : 
Il suffira de faire cela une seule fois.| 
shell> ln -s /dev/null $HOME/.mysql_history
 | 
 Sommaire : |