Manuel MySQL
Table des matières
- 8.1. Présentation des scripts serveurs et utilitaires
- 8.2.
myisampack, le générateur de tables MySQL compressées en lecture seule - 8.3.
mysql, l'outil en ligne de commande - 8.4.
mysqladmin, administration d'un serveur MySQL - 8.5.
mysqlbinlog, Exécuter des requêtes dans le log binaire - 8.6.
mysqlcc, MySQL Control Center - 8.7. Utiliser
mysqlcheckpour l'entretien et la réparation - 8.8.
mysqldump, sauvegarde des structures de tables et les données - 8.9.
mysqlhotcopy, copier les bases et tables MySQL - 8.10.
mysqlimport, importer des données depuis des fichiers texte - 8.11. Afficher les bases, tables et colonnes
- 8.12.
perror, expliquer les codes d'erreurs - 8.13. L'utilitaire de remplacement de chaînes
replace
Il y a de nombreux programmes clients de MySQL, qui se connectent au serveur pour accéder aux bases ou effectuer des opérations administratives. D'autres utilitaires sont aussi disponibles. Ils ne communiquent pas avec le serveur, mais effectuent des opérations liées à MySQL.
Ce chapitre fournit un bref aper¸u de ces programmes, et vous en dit plus long sur le fonctionnement de chacun. Les descriptions indiquent comment invoquer les programmes, et quelles options ils comprennent. Voyez Chapitre 4, Utiliser les programmes MySQL pour des informations plus générales sur les programmes et leur options.
Voici une brève liste des scripts et utilitaires pour le serveur :
-
Un utilitaire qui compresse les tables
MyISAMpour produire des tables en lecture seule très compactes. See Section 8.2, «myisampack, le générateur de tables MySQL compressées en lecture seule ». -
Le client en ligne de commande, pour envoyer des requêtes à MySQL, interactivement, ou en batch. See Section 8.3, «
mysql, l'outil en ligne de commande ». -
Un script qui vérifie les droits d'accès du trio hôte, utilisateur et base de données.
-
Un utilitaire pour réaliser des opérations d'administration de la base, telles que les créations de bases, le rafraîchissement des tables de droits, l'écriture des tables sur le disque et la réouverture des fichiers de log. à
mysqladminpermet aussi de lire la version, les processus et les informations de statut du serveur. See Section 8.4, «mysqladmin, administration d'un serveur MySQL ». -
Utilitaire de lecture des requêtes au format binaire. Peut être utilisé après un crash, sur une vieille sauvegarde. See Section 8.5, «
mysqlbinlog, Exécuter des requêtes dans le log binaire ». -
Interface graphique avec le serveur MySQL. See Section 8.6, «
mysqlcc, MySQL Control Center ». -
Un client d'entretien de tables, qui vérifie, répare, analyse et optimise les tables. See Section 8.7, « Utiliser
mysqlcheckpour l'entretien et la réparation ». -
Exporte une base de données MySQL dans un fichier sous la forme de requêtes SQL, ou de fichiers texte, avec la tabulation comme séparateur. Un freeware amélioré, d'après une idée originale de Igor Romanenko. See Section 8.8, «
mysqldump, sauvegarde des structures de tables et les données ». -
Un utilitaire qui fait des sauvegardes rapides des tables
MyISAMetISAMalors que le serveur fonctionne. See Section 8.9, «mysqlhotcopy, copier les bases et tables MySQL ». -
Importe les fichiers textes dans les tables, en utilisant la commande
LOAD DATA INFILE. See Section 8.10, «mysqlimport, importer des données depuis des fichiers texte ». -
See Section 8.11, « Afficher les bases, tables et colonnes ».
-
Un utilitaire qui affiche la signification des codes d'erreur MySQL. See Section 8.12, «
perror, expliquer les codes d'erreurs ». -
replacemodifie des chaînes dans des fichiers, ou sur l'entrée standard. See Section 8.13, « L'utilitaire de remplacement de chaînesreplace».
Chaque programme MySQL accepte différentes options. Mais chaque programme dispose de l'option --help qui vous donne une description complète des options du programme. Par exemple, mysql --help.
Les clients MySQL qui communiquent avec le serveur, utilisent la bibliothèque mysqlclient est les variables d'environnements suivantes :
MYSQL_UNIX_PORT |
Le fichier de socket Unix par défaut. Utilisé pour les connexions à localhost |
MYSQL_TCP_PORT |
Le port par défaut. Utilisé par les connexions TCP/IP. |
MYSQL_PWD |
Le mot de passe par défaut. |
MYSQL_DEBUG |
Les options de débogage. |
TMPDIR |
Le dossier où les tables et fichiers temporaires sont placés. |
Utiliser MYSQL_PWD n'est pas sécuritaire, et est fortement déconseillé. See Section 5.6.6, « Garder vos mots de passe en lieu sûr ».
Vous pouvez remplacer les valeurs par défaut des options en spécifiant les valeurs dans un fichier d'options, ou en ligne de commande. Section 4.3, « Spécifier des options aux programmes ».
myisampack sert à compresser des tables MyISAM et pack_isam sert à compresser les tables ISAM. Comme les tables ISAM sont obsolètes, nous ne traiterons que de myisampack, mais tout ce qui est dit au sujet de myisampack est aussi vrai pour pack_isam.
myisampack fonctionne en compressant séparément chaque colonne de la table. Les informations nécessaires à la décompression sont lues en mémoire lorsque la table est ouverte. Cela donne de bien meilleures performances lors de l'accès à des lignes individuelles, car nous n'avez qu'à décompresser exactement une des lignes, et non pas un bloc de disque entier. Généralement, myisampack compresse le fichier avec un gain de 40 à 70 %.
MySQL utilise la carte mémoire (mmap()) sur les tables compressées et utilise les outils classiques de lecture et écriture si mmap() ne fonctionne pas.
Notez bien ceci :
-
Si
mysqlda été appelé avec l'option--skip-external-locking, ce n'est pas une bonne idée que d'appelermyisampacksi la table risque d'être mise à jour par le processus principal. -
Après avoir compressé la table, celle-ci n'est plus accessible qu'en lecture. C'est souvent un état voulu (par exemple, pour être gravée sur un CD). De plus, autoriser les écritures dans une table compressée fait partie de notre liste de tâche, mais avec une très faible priorité.
-
myisampackpeut aussi compresser des colonnesBLOBouTEXT. L'ancienpack_isam(pour les tablesISAM) ne peut le faire.
myisampack est invoqué comme ceci :
shell> myisampack [options] filename ...
Chaque nom de fichier doit être le nom d'un fichier d'index (.MYI). Si vous n'êtes pas dans le dossier de données, vous devez spécifier le chemin complet jusqu'au fichier. Il est toléré que vous omettiez l'extension du fichier .MYI.
myisampack supporte les options suivantes :
-
--help, -?Affiche le message d'aide et quitte.
-
--backup, -bFait une sauvegarde de la table sous le nom de
tbl_name.OLD. -
--debug[=debug_options], -# [debug_options]Affiche le log de débogage. La chaîne
debug_optionsvaut souvent'd:t:o,filename'. -
--force, -fForce la compression de la table, même si elle grossit ou si le fichier temporaire existe déjà.
myisampackcrée un fichier temporaire appelétbl_name.TMDlors de la compression. Si vous tuezmyisampack, le fichier.TMDpeut ne pas être effacé. Normalement,myisampackse termine avec une erreur s'il découvre que le fichiertbl_name.TMDexiste. Avec--force,myisampackreprendra le travail. -
--join=big_tbl_name, -j big_tbl_nameRassemble toutes les tables indiquées dans la ligne de commande dans une seule table appelée
big_tbl_name. Toutes les tables qui seront combinées doivent être identiques (mêmes noms de colonnes, mêmes types, mêmes index, etc.) -
--packlength=#, -p #Spécifie la taille de stockage de la longueur de ligne, en octets. Cette valeur doit être 1, 2, ou 3. (
myisampackstocke toutes les lignes avec des pointeurs de lignes de 1, 2 ou 3 octets. Dans les cas normaux,myisampackpeut déterminer la taille correcte avant de compresser le fichier, mais il peut aussi se rendre compte durant le processus qu'une autre taille aurait été plus appropriée, ou plus courte. Dans ce cas,myisampackva imprimer une note pour que vous le sachiez lors de la prochaine compression du même fichier. -
--silent, -sMode silencieux. Seules les erreurs seront affichées.
-
--test, -tNe compresse pas la table, mais teste juste la compression.
-
--tmp_dir=path, -T pathUtilise le dossier indiqué comme dossier pour les fichiers temporaires.
-
--verbose, -vMode détaillé. Toutes les informations sur la progression de la compression seront affichées.
-
--version, -VAffiche la version et quitte.
-
--wait, -wAttend et reessaie, si la table était déjà en cours d'utilisation. Si le serveur
mysqlda été démarré avec l'option--skip-external-locking, ce n'est pas une bonne idée d'appelermyisampack, car la table risque d'être modifiée durant la compression.
La séquence de commande illustre la session de compression :
shell>ls -l station.*-rw-rw-r-- 1 monty my 994128 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 53248 Apr 17 19:00 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell>myisamchk -dvv stationMyISAM file: station Isam-version: 2 Creation time: 1996-03-13 10:08:58 Recover time: 1997-02-02 3:06:43 Data records: 1192 Deleted blocks: 0 Datafile: Parts: 1192 Deleted data: 0 Datafile pointer (bytes): 2 Keyfile pointer (bytes): 2 Max datafile length: 54657023 Max keyfile length: 33554431 Recordlength: 834 Record format: Fixed length table description: Key Start Len Index Type Root Blocksize Rec/key 1 2 4 unique unsigned long 1024 1024 1 2 32 30 multip. text 10240 1024 1 Field Start Length Type 1 1 1 2 2 4 3 6 4 4 10 1 5 11 20 6 31 1 7 32 30 8 62 35 9 97 35 10 132 35 11 167 4 12 171 16 13 187 35 14 222 4 15 226 16 16 242 20 17 262 20 18 282 20 19 302 30 20 332 4 21 336 4 22 340 1 23 341 8 24 349 8 25 357 8 26 365 2 27 367 2 28 369 4 29 373 4 30 377 1 31 378 2 32 380 8 33 388 4 34 392 4 35 396 4 36 400 4 37 404 1 38 405 4 39 409 4 40 413 4 41 417 4 42 421 4 43 425 4 44 429 20 45 449 30 46 479 1 47 480 1 48 481 79 49 560 79 50 639 79 51 718 79 52 797 8 53 805 1 54 806 1 55 807 20 56 827 4 57 831 4 shell>myisampack station.MYICompressing station.MYI: (1192 records) - Calculating statistics normal: 20 empty-space: 16 empty-zero: 12 empty-fill: 11 pre-space: 0 end-space: 12 table-lookups: 5 zero: 7 Original trees: 57 After join: 17 - Compressing file 87.14% shell>ls -l station.*-rw-rw-r-- 1 monty my 127874 Apr 17 19:00 station.MYD -rw-rw-r-- 1 monty my 55296 Apr 17 19:04 station.MYI -rw-rw-r-- 1 monty my 5767 Apr 17 19:00 station.frm shell>myisamchk -dvv stationMyISAM file: station Isam-version: 2 Creation time: 1996-03-13 10:08:58 Recover time: 1997-04-17 19:04:26 Data records: 1192 Deleted blocks: 0 Datafile: Parts: 1192 Deleted data: 0 Datafilepointer (bytes): 3 Keyfile pointer (bytes): 1 Max datafile length: 16777215 Max keyfile length: 131071 Recordlength: 834 Record format: Compressed table description: Key Start Len Index Type Root Blocksize Rec/key 1 2 4 unique unsigned long 10240 1024 1 2 32 30 multip. text 54272 1024 1 Field Start Length Type Huff tree Bits 1 1 1 constant 1 0 2 2 4 zerofill(1) 2 9 3 6 4 no zeros, zerofill(1) 2 9 4 10 1 3 9 5 11 20 table-lookup 4 0 6 31 1 3 9 7 32 30 no endspace, not_always 5 9 8 62 35 no endspace, not_always, no empty 6 9 9 97 35 no empty 7 9 10 132 35 no endspace, not_always, no empty 6 9 11 167 4 zerofill(1) 2 9 12 171 16 no endspace, not_always, no empty 5 9 13 187 35 no endspace, not_always, no empty 6 9 14 222 4 zerofill(1) 2 9 15 226 16 no endspace, not_always, no empty 5 9 16 242 20 no endspace, not_always 8 9 17 262 20 no endspace, no empty 8 9 18 282 20 no endspace, no empty 5 9 19 302 30 no endspace, no empty 6 9 20 332 4 always zero 2 9 21 336 4 always zero 2 9 22 340 1 3 9 23 341 8 table-lookup 9 0 24 349 8 table-lookup 10 0 25 357 8 always zero 2 9 26 365 2 2 9 27 367 2 no zeros, zerofill(1) 2 9 28 369 4 no zeros, zerofill(1) 2 9 29 373 4 table-lookup 11 0 30 377 1 3 9 31 378 2 no zeros, zerofill(1) 2 9 32 380 8 no zeros 2 9 33 388 4 always zero 2 9 34 392 4 table-lookup 12 0 35 396 4 no zeros, zerofill(1) 13 9 36 400 4 no zeros, zerofill(1) 2 9 37 404 1 2 9 38 405 4 no zeros 2 9 39 409 4 always zero 2 9 40 413 4 no zeros 2 9 41 417 4 always zero 2 9 42 421 4 no zeros 2 9 43 425 4 always zero 2 9 44 429 20 no empty 3 9 45 449 30 no empty 3 9 46 479 1 14 4 47 480 1 14 4 48 481 79 no endspace, no empty 15 9 49 560 79 no empty 2 9 50 639 79 no empty 2 9 51 718 79 no endspace 16 9 52 797 8 no empty 2 9 53 805 1 17 1 54 806 1 3 9 55 807 20 no empty 3 9 56 827 4 no zeros, zerofill(2) 2 9 57 831 4 no zeros, zerofill(1) 2 9
Les informations affichées par myisampack sont décrites ici :
-
normalLe nombre de colonnes pour lesquelles aucune compression n'est utilisée.
-
empty-spaceLe nombre de colonnes dont les valeurs ne contiennent que des octets : elles n'occuperont plus qu'un octet.
-
empty-zeroLe nombre de colonnes dont les valeurs ne contiennent que des zéros : elles n'occuperont plus qu'un octet.
-
empty-fillLe nombre de colonnes de type entier qui n'occupent pas la totalité de l'espace de leur type. Elles seront réduites en taille (par exemple, une colonne de type
INTEGERsera transformée enMEDIUMINT). -
pre-spaceLe nombre de colonnes de nombres à virgule flottante qui ont des valeurs stockées avec des espaces initiaux. Dans ce cas, chaque valeur va contenir le nombre d'espace initiaux.
-
end-spaceLe nombre de colonnes qui ont de nombreux espaces terminaux. Dans ce cas, chaque valeur va contenir un compte du nombre d'espaces terminaux.
-
table-lookupLa colonne n'a que quelques valeurs différentes, qui seront converties en une colonne de type
ENUMavant une compression de type Huffman. -
zeroLe nombre de colonnes pour lesquelles toutes les valeurs sont zéro.
-
Original treesLe nombre initial d'arbres Huffman.
-
After joinLe nombre d'arbres Huffman distincts obtenus après avoir joint les arbres pour économiser de l'espace d'entête.
Après la compression d'une table, myisamchk -dvv affiche des informations supplémentaires pour chaque champ :
-
TypeLe type de fichier peut contenir les informations suivantes :
-
constantToutes les lignes ont la même valeur.
-
no endspaceNe stocke pas les espaces finaux.
-
no endspace, not_alwaysNe stocke pas les espaces finaux et ne compresse pas les espaces finaux pour toutes les valeurs.
-
no endspace, no emptyNe stocke pas les espaces finaux. Ne stocke pas les valeurs vides.
-
table-lookupLa colonne a été convertie en
ENUM. -
zerofill(n)Les
nchiffres significatifs sont toujours 0, et n'ont pas été stockés. -
no zerosNe stocke pas les zéros.
-
always zeroLes valeurs 0 sont stockées sur un octet.
-
-
Huff treeL'arbre Huffman associé au champ.
-
BitsLe nombre de bits utilisés par l'arbre Huffman.
Après la compression de pack_isam/myisampack vous devez exécuter la commande isamchk/myisamchk pour recréer l'index. A ce moment, vous pouvez aussi trier les blocs d'index et créer des statistiques nécessaires pour l'optimiseur MySQL :
shell> myisamchk -rq --sort-index --analyze tbl_name.MYI
Une procédure similaire s'applique aux tables ISAM. Après avoir utilisé pack_isam, utilisez isamchk pour recréer les index :
shell> isamchk -rq --sort-index --analyze tbl_name.ISM
Après avoir installé la table compressée dans un dossier de données MysQL, vous devez exécutez la commande mysqladmin flush-tables pour forcer mysqld à utiliser cette nouvelle table.
Si vous voulez décompresser une table compressée, vous pouvez le faire avec l'option --unpack de la commande isamchk ou myisamchk.
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 :
shell> mysql db_name
ou :
shell> mysql --user=user_name --password=your_password db_name
Tapez une commande SQL, puis terminez-la avec ‘;’, ‘\g’ ou ‘\G’, et finissez avec entrée.
Vous pouvez exécuter un script avec :
shell> mysql db_name < script.sql > output.tab
mysql supporte les options suivantes :
-
--help, -?Affiche cette aide et quitte.
-
Affiche les résultats avec une tabulation comme résultat, et chaque ligne avec une nouvelle ligne. N'utilise pas l'historique.
-
Le dossier où les jeux de caractères sont créés. See Section 5.8.1, « Le jeu de caractères utilisé pour les données et le stockage ».
-
Utilise la compression avec le protocole client / serveur.
-
--database=db_name, -D db_nameLa 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_optionsvaut souvent'd:t:o,file_name'. Par défaut, la valeur est'd:t:o,/tmp/mysql.trace'. -
Affiche des informations de débogage lorsque le programme se termine.
-
--default-character-set=charsetConfigure le jeu de caractères par défaut. See Section 5.8.1, « Le jeu de caractères utilisé pour les données et le stockage ».
-
--execute=statement, -e statementExécute une commande et quitte. Le résultat est au format de l'option
--batch. -
Continue même si vous recevez une erreur SQL.
-
--host=host_name, -h host_nameConnexion avec l'hôte indiqué.
-
Produit un résultat au format HTML.
-
Ignore les espaces après les noms de fonctions. L'effet de cette commande est décrit dans la discussion sur
IGNORE_SPACEde la section Section 5.2.2, « Le mode SQL du serveur ». -
Active ou désactive la possibilité d'utiliser la commande
LOCALpourLOAD DATA INFILE. Sans valeur, cette option activeLOCAL. Elle peut être configuré avec--local-infile=0ou--local-infile=1pour explicitement activer ou désactiverLOCAL. ActiverLOCALn'a pas d'effet si le serveur ne le supporte pas de son coté. -
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. -
Pas de rehashage automatique. Cette option fait que
mysqlse lance plus rapidement, mais vous devez utiliser la commanderehashsi vous voulez utiliser la completion de nom de tables. -
Ne fait pas de bip, lorsqu'une erreur survient.
-
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,mysqldé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. -
Désactive le système de page, et affiche directement dans la sortie standard. Plus de détails dans la section Section 8.3.1, « Commandes
mysql». -
Désactive le fichier de sortie. Voyez l'aide interactive (\h). Plus de détails dans la section Section 8.3.1, « Commandes
mysql». -
Ne modifie que la base par défaut. C'est pratique pour éviter les modifications dans les autres bases dans le fichier de log.
-
Type d'affichage. Par défaut, la variable d'environnement
ENVvautPAGER. Les pagineurs valides sontless,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 Section 8.3.1, « Commandesmysql». -
--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. -
Le numéro de port TCP/IP pour la connexion.
-
Modifie le format de l'invite de commandes (
prompt). Par défaut, c'estmysql>. Les séquences spéciales sont présentées dans la section Section 8.3.1, « Commandesmysql». -
--protocol={TCP | SOCKET | PIPE | MEMORY}Spécifie le protocole de connexion à utiliser. Nouveau en MySQL version 4.1.
-
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.
-
Ecrit les valeurs des colonnes sans les conversions de protections. Utilisé en mode
--batch -
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, -UN'autorise que les commandes
UPDATEetDELETEqui 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'optionmy.cnfen utilisant la syntaxe--safe-updates. Voyez la section Section 8.3.3, « Conseils avecmysql» pour plus d'informations sur cette option. -
Mode très silencieux.
-
N'écrit pas les noms de colonnes dans les résultats.
-
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.
-
Le fichier de socket à utiliser pour la connexion.
-
Affichage au format de table. C'est le mode par défaut pour le mode non-batch.
-
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 Section 8.3.1, « Commandes
mysql». -
Vide le buffer de requête après chaque requête.
-
--user=user_name, -u user_nameNom d'utilisateur pour la connexion, si ce n'est pas l'utilisateur Unix courant.
-
Affichage plus détaillé (
-v -v -vindique le format d'affichage de table). -
Affiche la version et quitte.
-
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. -
Attend et retente si la connexion s'interrompt, au lieu de quitter.
-
Affiche le résultat au format XML.
Vous pouvez aussi spécifier les variables suivantes avec la syntaxe --var=option :
-
connect_timeoutNombre de secondes avant que la connexion n'expire. Valeur par défaut : 0.
-
max_allowed_packetTaille maximale du paquet de communication avec le serveur. Valeur par défaut : 16777216.
-
max_join_sizeLimite automatique pour les commandes de jointure avec l'option
--i-am-a-dummy. Valeur par défaut : 1 000 000 (un million). -
net_buffer_lengthBuffer pour les communications TCP/IP et socket. Valeur par défaut : 16 ko.
-
select_limitLimite automatique pour les commandes
SELECTavec l'option--i-am-a-dummyValeur par défaut : 1000.
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.
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_HISTFILEla 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_histfilevers/dev/null:shell>
ln -s /dev/null $HOME/.mysql_historyIl suffira de faire cela une seule fois.
mysql envoie des requêtes SQL que vous avez saisie au serveur, pour exécution. Il y a aussi des commandes que le client mysql interprête. Si vous tapez ‘help’ en ligne de commande, mysql va afficher les commandes qu'il supporte :
mysql> help
MySQL commands:
? (\h) Synonym for `help'.
clear (\c) Clear command.
connect (\r) Reconnect to the server.
Optional arguments are db and host.
delimiter (\d) Set query delimiter.
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.
help (\h) Display this help.
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 an SQL script file.
Takes a file name as an argument.
status (\s) Get status information from the server.
system (\!) Execute a system shell command.
tee (\T) Set outfile [to_outfile].
Append everything into given outfile.
use (\u) Use another database.
Takes database name as argument.
Les commandes edit, nopager, pager et system ne fonctionnent 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.
Pour enregistrer les requêtes et leur résultat, utilisez la commande tee. Toutes les données affichées à l'écran seront ajoutées à un fichier donné. Cela peut être très pratique pour déboguer. Vous pouvez activer cette fonctionnalité en ligne de commande, avec l'option --tee, ou interactivement avec la commande tee. Le fichier tee peut être désactivé interactivement avec la commande notee. Exécuter tee à nouveau ré-active le log. Sans paramètre, le fichier précédent sera utilisé. Notez que tee envoie les requêtes dans le fichier après chaque commande, juste avant que mysql ne l'affiche.
La lecture et la recherche dans les résultats de requêtes en mode interactif est possible en utilisant les programmes Unix less, more, ou tout autre programme similaire, avec l'option --pager. Si vous ne spécifier par de valeur d'option, mysql regarde la valeur de la variable d'environnement PAGER, et utilise ce pager. Vous pouvez aussi l'activer interactivement avec la commande pager et la désactiver avec nopager. La commande prend un argument optionnel : s'il est fournit, le programme de pager indiqué sera utilisé. Sinon, le pager sera celui indiqué en ligne de commande, ou stdout si aucun pager n'était indiqué.
La pagination de sortie ne fonctionne que sous Unix, car elle utilise la fonction popen(), qui n'existe pas sous Windows. Pour Windows, la commande tee peut être utilisée pour sauver le résultat, même si ce n,est pas aussi pratique que pager pour naviguer dans le résultat.
Quelques conseils avec la commande pager :
-
Vous pouvez l'utiliser pour écrire les résultats dans un fichier :
mysql>
pager cat > /tmp/log.txtVous pouvez lui passer les options que le page comprendra :
mysql>
pager less -n -i -S -
Dans le précédent exemple, notez l'option
-S. Vous la trouverez pratique pour naviguer dans des résultats très larges. Parfois, un résultat très large est difficile à lire à l'écran. L'option-Sdelessrend le résultat plus lisible, car vous pouvez aussi scroller horizontalement, avec les flèches de droite et de gauche. Vous pouvez aussi utiliser interactivement-Sdanslesspour activer ou désactiver la navigation horizontale. Pour plus d'informations, voyez le manuel deless:shell>
man less -
Vous pouvez spécifier des commandes de pages très complexe :
mysql>
pager cat | tee /dr1/tmp/res.txt \| tee /dr2/tmp/res2.txt | less -n -i -SDans cet exemple, la commande va envoyer les résultats de la commande dans deux fichiers différents, dans deux dossiers différents, placés sur deux devis
/dr1et/dr2, mais affichera toujours le résultat à l'écran vialess.
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. La chaîne de définition de l'invite de commande accepte les séquences 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.
Si vous spécifiez une commande prompt sans argument, mysql utilisera l'invite de commande par défaut de mysql>.
Vous pouvez modifier l'invite de commande comme ceci :
-
Variable d'environnement 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]> " -
Utiliser le fichier d'options
Vous pouvez configurer l'invite de commandes
promptdans le fichier d'options MySQL, comme/etc/my.cnfou.my.cnf, dans le groupemysql. Par exemple :[mysql] prompt=(\\u@\\h) [\\d]>\\_
Dans cet exemple, notez que les anti-slash sont doublés. Si vous configurez l'invite de commande
promptdans un fichier d'options, il est recommandé de doubler les anti-slash, lorsque vous utilisez des options. Il y a des recoupements entre les séquences protégées et les options. Ces séquences sont listées dans Section 4.3.2, « Fichier d'optionsmy.cnf». Ce recoupement peut vous causer des problèmes avec des anti-slashs uniques. Par exemple,\ssera interprété comme un espace, plutôt que comme le nombre de secondes. La valeur suivante montre comment définir une invite avec l'heure au formatHH:MM:SS>:[mysql] prompt="\\r:\\m:\\s> "
-
Utilisez une option de ligne de commande
Vous pouvez utiliser l'option
--promptdans la commandemysql. Par exemple :shell>
mysql --prompt="(\u@\h) [\d]> "(user@host) [database]> -
Interactivement
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>
Le client mysql peut être utilisé en mode interactif comme ceci :
shell> mysql database
Toutefois, il est aussi possible de rassembler les commandes SQL dans un fichier, et d'indiquer à mysql de lire les commandes dans ce fichier. Pour faire cela, créez un fichier texte fichier_texte qui contient les commandes SQL que vous souhaitez exécuter. Puis, exécutez ce fichier avec mysql comme ceci :
shell> mysql database < fichier_texte
Vous pouvez aussi démarrer votre fichier texte avec la commande USE nom_base. Dans ce cas, il n'est pas nécessaire de spécifier le nom de la base de données dans la ligne de commande :
shell> mysql < fichier_texte
Si vous avez déjà démarré le client mysql, vous pouvez exécuter un script SQL en utilisant la commande source :
mysql> source nom_fichier;
Pour plus d'informations sur le mode batch, consultez Section 3.5, « Utilisation de mysql en mode batch ».
Cette section décrit certaines techniques qui vous aideront à utiliser mysql plus efficacement.
Certaines requêtes sont bien plus lisibles une fois affichées verticalement, au lieu de horizontalement. Par exemple, si la taille du texte est bien plus grande que la largeur de l'écran, ou qu'il y a des retours à la ligne, le format vertical est préférable :
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
Thimble> with UTF-8 or Unicode? Otherwise, I'll put this on my
Thimble> TODO list and see what happens.
Yes, please do that.
Regards,
Monty
file: inbox-jani-1
hash: 190402944
1 row in set (0.09 sec)
Pour les débutants, une option de démarrage pratique est --safe-updates (ou --i-am-a-dummy, qui a le même effet). Cette option a été introduite en MySQL 3.23.11. Elle est pratique si vous avec émis des commandes DELETE FROM tbl_name mais que vous avez oublié la clause WHERE. Normalement, une telle commande va effacer toutes les lignes de la table. Avec --safe-updates, vous pouvez effacer uniquement les lignes dont vous spécifiez les valeurs de clé pour les identifier. Cela évite les accidents.
Lorsque vous utilisez l'option --safe-updates, mysql émet l'alerte suivante lorsqu'il se connecte à MySQL :
SET SQL_SAFE_UPDATES=1,SQL_SELECT_LIMIT=1000,
SQL_MAX_JOIN_SIZE=1000000;
See Section 13.5.2.8, « Syntaxe de SET ».
La commande SET a l'effet suivant :
-
Vous n'êtes pas autorisés à exécuter de commandes
UPDATEetDELETEà moins que vous ne spécifiez une contrainte de clé dans la clauseWHEREoù que vous fournissiez une clauseLIMIT, ou les deux. Par exemple :UPDATE tbl_name SET not_key_column=# WHERE key_column=#; UPDATE tbl_name SET not_key_column=# LIMIT 1;
-
Tous les résultats importants de
SELECTsont automatiquement limités à 1000, à moins que la commande n'inclut la clauseLIMIT. -
Les commandes
SELECTmulti-tables qui devront étudier plus d'un million de lignes sont annulées.
Pour spécifier des limites autres que 1000 et 1000000, vous pouvez remplacer les maxima avec --select_limit et --max_join_size :
shell> mysql --safe-updates --select_limit=500 --max_join_size=10000
Si le client mysql perd la connexion au serveur durant l'envoi d'une requête, il va immédiatement et automatiquement essayer de se reconnecter une fois au serveur, puis essayer d'envoyer à nouveau la requête. Toutefois, même si mysql réussit à se reconnecter, l'ancienne connexion a été fermée, et tous les objets temporaires ont été perdus : tables temporaires, configuration en auto_commit, variables utilisateur et de session. Ce comportement peut se révéléer dangeureux pour vous, comme dans l'exemple suivant, où le serveur est stoppé, puis relancé sans que vous le sachiez :
mysql>SET @a=1;Query OK, 0 rows affected (0.05 sec) mysql>INSERT INTO t VALUES(@a);ERROR 2006: MySQL server has gone away No connection. Trying to reconnect... Connection id: 1 Current database: test Query OK, 1 row affected (1.30 sec) mysql>SELECT * FROM t;+------+ | a | +------+ | NULL | +------+ 1 row in set (0.05 sec)
La variable utilisateur @a a été perduée, et lors de la reconnexion, elle est indéfinie. S'il est important que mysql génère une erreur lors de la perte de connexion, vous pouvez lancez le client mysql avec l'option --skip-reconnect.
mysqladmin est un utilitaire pour exécuter des commandes d'administration. Vous pouvez l'utiliser pour vérifier la configuration du serveur, créer et effacer des bases, etc.
La syntaxe de mysqladmin est :
shell> mysqladmin [OPTIONS] command [command-option] command ...
Le mysqladmin actuel supporte les commandes suivantes :
-
create databasenameCrée une nouvelle base.
-
drop databasenameEfface une base et toutes ces tables.
-
extended-statusAffiche un message de statut du serveur très complet.
-
flush-hostsVide tous les hôtes mis en cache.
-
flush-logsVide de la mémoire tous les logs.
-
flush-privilegesRecharger les tables de droits (identique à la commande reload).
-
flush-statusRemet à zéro les variables de statut.
-
flush-tablesVide de la mémoire toutes les tables.
-
flush-threadsVide les threads de cache. Nouveau en MySQL 3.23.16.
-
kill id,id,...Termine un thread MySQL.
-
password new-passwordSpécifie un nouveau mot de passe. Modifie l'ancien mot de passe en
new-passwordpour le compte que vous utilisez lors de la connexion avecmysqladmin. -
pingVérifie si mysqld fonctionne ou pas.
-
processlistAffiche la liste des processus du serveur. Cela revient à la commande
SHOW PROCESSLIST. Si--verboseest utilisé, le résultat est le même queSHOW FULL PROCESSLIST. -
reloadRecharge les tables de droits.
-
refreshVide de la mémoire toutes les tables, puis ferme et réouvre les fichiers de logs.
-
shutdownEteind le serveur.
-
slave-startDémarre l'esclave de réplication.
-
statusAffiche le message de statut court du serveur.
-
slave-stopEteind l'esclave de réplication.
-
variablesAffiche les variable disponibles.
-
versionAffiche la version du serveur.
Toutes les commandes peuvent être réduites à leur préfixe simple. Par exemple :
shell> mysqladmin proc stat
+----+-------+-----------+----+-------------+------+-------+------+
| Id | User | Host | db | Command | Time | State | Info |
+----+-------+-----------+----+-------------+------+-------+------+
| 6 | monty | localhost | | Processlist | 0 | | |
+----+-------+-----------+----+-------------+------+-------+------+
Uptime: 10077 Threads: 1 Questions: 9 Slow queries: 0
Opens: 6 Flush tables: 1 Open tables: 2
Memory in use: 1092K Max memory used: 1116K
La commande mysqladmin status liste les colonnes suivantes :
-
Nombre de secondes de vie du serveur MySQL.
-
Nombre de threads actifs (clients).
-
Nombre de questions re¸u des clients depuis le démarrage de
mysqld. -
Nombre de requêtes qui ont pris plus de
long_query_timesecondse. See Section 5.9.5, « Le log des requêtes lentes ». -
Combien de tables sont ouvertes par
mysqld. -
Nombre de commandes
flush ...,refreshetreload. -
Nombre de tables qui sont ouvertes actuellement.
-
Mémoire allouée directement par
mysqld(uniquement disponible si MySQL a été compilé avec l'option --with-debug=full). -
Maximum de mémoire allouée directement par
mysqld(uniquement disponible si MySQL a été compilé avec l'option--with-debug=full).
Si vous exécutez mysqladmin shutdown en vous connectant à un serveur local, avec un fichier de socket Unix, mysqladmin va attendre que le fichier de processus du serveur soit supprimé, pour s'assurer que le serveur est bien arrété.
mysqladmin supporte les options suivantes :
-
--help, -?Affiche le message d'aide et quitte.
-
--character-sets-dir=pathLe dossier où les jeux de caractères sont stockés. See Section 5.8.1, « Le jeu de caractères utilisé pour les données et le stockage ».
-
--compress, -CCompresse toutes les informations entre le client et le serveur, si les deux le supporte.
-
--count=#, -c #Le nombre d'itération à faier. Cela fonctionne uniquement avec
--sleep(-i). -
--debug[=debug_options], -# [debug_options]Écrit un log de débogage. La chaîne
debug_optionsest souvent'd:t:o,file_name'. La valeur par défaut est'd:t:o,/tmp/mysqladmin.trace'. -
--force, -fNe demande pas de confirmation pour la commande
drop database. Avec des commandes multiples, continue même si une erreur survient. -
--host=host_name, -h host_nameConnexion au serveur MYSQL avec le nom d'hôte donné.
-
--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_numLe numéro de port TCP/IP pour la connexion.
-
--protocol={TCP | SOCKET | PIPE | MEMORY}Spécifie le protocole de connexion à utiliser. Nouveau en MySQL 4.1.
-
--relative, -rAffiche la différence entre la valeur courante et la valeur précédente, lorsqu'utilisé avec l'option
-i. Actuellement, cette option fonctionne avec la commandeextended-status. -
--silent, -sMode très silencieux.
-
--sleep=delay, -i delayExécute les commandes encore et encore, avec
delaysecondes entre deux. -
--socket=path, -S pathLe fichier de socket à utiliser pour la connexion.
-
--user=user_name, -u user_nameNom d'utilisateur pour la connexion, si ce n'est pas l'utilisateur Unix courant.
-
--verbose, -vAffichage plus détaillé (-v -v -v indique le format d'affichage de table).
-
--version, -VAffiche la version et quitte.
-
--vertical, -EPrint output vertically. This is similar to
--relative, but prints output vertically. -
--wait[=#], -w[#]Si la connexion n'a pu être établie, attent et ressaie au lieu d'abandonner. Si une valeur est spécifiée, elle indique le nombre de tentatives. La valeur par défaut est 1 fois.
Vous pouvez aussi configurer ces options avec la syntaxe --var_name=value :
-
connect_timeoutLe nombre de secondes avant une éxpiration de connexion. (Par défaut, 0.)
-
shutdown_timeoutLe nombre de seconde d'attente de l'extinction. (Par défaut, 0.)
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.
Les fichiers de log sont écrits dans un format binaire. Vous pouvez éxaminer le log binaire avec l'utilitaire mysqlbinlog. Il est disponible depuis MySQL 3.23.14.
Appelez mysqlbinlog comme ceci :
shell> mysqlbinlog [options] log-file ...
Par exemple, pour afficher le contenu du fichier de log binaire binlog.000003, utilisez cette commande :
shell> mysqlbinlog binlog.0000003
Le résultat est toutes les requêtes contenues dans le fichier de log binaire binlog.000003, avec différentes informations (durée de la requête, identifiant du thread qui l'a émise, timestamp d'émission, etc.).
Normalement, vous utilisez mysqlbinlog pour lire les fichiers de log directement, et les envoyer au serveur MySQL local. Il est aussi possible de lire le fichier binaire sur un serveur distant en utilisant l'option --read-from-remote-server. Cependant, c'est une technique abandonnée, car nous préférons rendre plus simple l'utilisation des logs binaires sur un serveur MySQL local.
Lorsque vous lisez des logs binaires distants, les options de connexion peuvent être données pour indiquer comment se connecter au serveur, mais ils sont ignorés à moins que vous ne spécifiez aussi l'option --read-from-remote-server. Ces options sont --host, --password, --port, --protocol, --socket et --user.
Vous pouvez aussi utiliser mysqlbinlog pour relayer des fichiers de log écrits par un serveur esclave, dans une architecture de réplication. Les logs de relais sont au même format que le log binaire.
Le log binaire est présenté en détails dans la section Section 5.9.4, « Le log binaire ».
mysqlbinlog supporte les optiosn suivantes :
-
--help, -?Affiche cette aide et quitte.
-
--database=db_name, -d db_nameLimite les lignes à cette base de données (log local uniquement).
-
--force-read, -fContinue même si vous obtenez une erreur SQL.
-
--host=host_name, -h host_nameLit le log binaire depuis le serveur MySQL distant.
-
--local-load=path, -l pathPrépare les fichiers temporaires destinés aux commandes
LOAD DATA INFILEdans le dossier spécifié. -
--offset=N, -o NIgnore les
Npremière lignes. -
--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_numLe numéro de port TCP/IP pour la connexion.
-
--position=N, -j NComment la lecture dans le log binaire à la position
N. -
--protocol={TCP | SOCKET | PIPE | MEMORY}Spécifie le protocole de connexion à utiliser. Nouveau en MySQL version 4.1.
-
--read-from-remote-server, -RRead the binary log from a MySQL server. Les options de connexion distantes seront ignorées à moins que cette option ne soit donné. Ces options sont
--host,--password,--port,--protocol,--socketet--user. -
--result-file=name, -r nameExport direct vers le fichier spécifié.
-
--short-form, -sAffiche uniquement les commandes du log, sans les informations supplémentaires.
-
--socket=path, -S pathLe fichier de socket à utiliser pour la connexion.
-
--user=user_name, -u user_nameLe nom d'utilisateur MySQL lors de la connexion à distance.
-
--version, -VAffiche la version et quitte.
Vous pouvez aussi configurer les variables suivantes avec l'option --var_name=value :
-
open_files_limitSpécifie le nombre de pointeurs de fichiers à réserver.
Vous pouvez envoyer le résultat de mysqlbinlog vers un client mysql avec un pipe : c'est une technique pour restaurer le serveur après un crash (see Section 5.7.1, « Sauvegardes de base de données ») :
shell> mysqlbinlog hostname-bin.000001 | mysql
ou :
shell> mysqlbinlog hostname-bin.[0-9]* | mysql
Vous pouvez aussi rediriger le résultat de mysqlbinlog dans un fichier texte, modifier ce fichier (supprimer les requêtes qui vous gênent), puis exécuter ces requêtes, depuis le fichier, avec mysql. Après edition du fichier, exécutez les commandes qu'il contient comme d'habitude, avec le programme mysql.
mysqlbinlog dispose de l'option --position qui affiche les requêtes du log binaire à partir de la position spécifiée.
Si vous avez plus d'un fichier de log binaire à exécuter sur le serveur MySQL, la méthode sûre est de tout faire avec la même connexion MySQL. Voici la méthode dangeureuse :
shell>mysqlbinlog hostname-bin.000001 | mysql # DANGER!!shell>mysqlbinlog hostname-bin.000002 | mysql # DANGER!!
Cela va causer des problèmes si le premier log contient des commandes de type CREATE TEMPORARY TABLE et que le second contient des requêtes d'utilisation de cette table : lorsque le premier mysql termine son exécution, il va détruire la table, et le second va rencontrer des erreurs ``unknown table''.
Pour éviter cela, utilisez une seule connexion, surtout si vous utilisez des tables temporaires. Voici deux méthodes possibles :
shell> mysqlbinlog hostname-bin.000001 hostname-bin.000002 | mysql
La seconde méthode :
shell>mysqlbinlog hostname-bin.000001 > /tmp/statements.sqlshell>mysqlbinlog hostname-bin.000002 >> /tmp/statements.sqlshell>mysql -e "source /tmp/statements.sql"
Depuis MySQL 4.0.14, mysqlbinlog peut préparer des requêtes valides pour mysql, afin d'il utilise la commande LOAD DATA INFILE depuis le log binaire. COmme le log contient les données à charger (c'est vrai depuis MySQL 4.0; MySQL 3.23 n'inscrivait pas les données à charger dans le log binaire, et le fichier original était nécessaire pour éxécuter le contenu du log binaire), mysqlbinlog va copier ces données dans un fichie temporaire et émettre une commande LOAD DATA INFILE pour que mysql le charge. Le dossier du fichier temporaire est le dossier temporaire par défaut : il peut être modifié avec l'option local-load de mysqlbinlog.
Comme mysqlbinlog convertit les commandes LOAD DATA INFILE en commandes LOAD DATA LOCAL INFILE (c'est à dire qu'il ajouteLOCAL), le client et le serveur que vous utilisez pour traiter les commandes doivent être configuré pour autoriser l'option LOCAL. See Section 5.4.4, « Problèmes de sécurité avec LOAD DATA LOCAL ».
ATTENTION : lorsque vous exécutez mysqlbinlog sur un fichier binaire, il va créer un fichier temporaire pour chaque commande LOAD DATA INFILE. Ces fichiers ne seront pas automatiquement effacés, car vous en aurez besoin lorsque vous exécuterez les commandes SQL générées. Il faudra les effacer manuellement lorsque vous n'en aurez plus besoin. Les fichiers portent le nom de temporary-dir/original_file_name-#-#.
Dans le futur, nous allons corriger ce problème, en permettant à mysqlbinlog de se connecter directement au serveur mysqld. Dans ce cas, nous pourrons supprimer tranquillement les fichiers de log, lorsqu'ils auront été utilisés.
Avant MySQL 4.1, mysqlbinlog ne pouvait pas préparer de log SQL pour mysql lorsque le log binaire contenait des requêtes de différents threads, utilisant des tables temporaires de même nom, si les requêtes étaient mélangées. Ceci est corrigé en MySQL 4.1.
mysqlcc, MySQL Control Center, est un client portable qui fournit une interface graphique (GUI) au serveur MySQL. Il supporte l'utilisation interactive, y compris la coloration syntaxique et la complétion. Il permet de gérer les tables et bases, et d'administrer le serveur.
Actuellement, mysqlcc fonctionne sur Windows et Linux.
mysqlcc n'est pas inclus avec les distribution MySQL, mais il peut être téléchargé séparément à http://dev.mysql.com/downloads/. Actuellement, mysqlcc fonctionne sur Windows et Linux.
Lancez mysqlcc en double-cliquant sur son icone en environnement graphique. En ligne de commande, utilisez ceci :
shell> mysqlcc [options]
mysqlcc supports the following options:
-
Affiche cette aide.
-
Utilise les requêtes bloquantes.
-
Utilise la compression avec le protocole client/serveur.
-
--connection_name=name, -c nameSynonyme de
--server. -
--database=db_name, -d db_nameBase de données à utiliser. C'est généralement utile dans un fichier d'options.
-
Taille de l'historique de la fenêtre de requête.
-
--host=host_name, -h host_nameHôte de connexion.
-
Active ou désactive les fonctionnalités
LOCALdeLOAD DATA INFILE. Sans valeur, cette option activeLOCAL.LOCALpeut être spécifié sous la forme--local-infile=0ou--local-infile=1pour être désactivée ou activée. ActiverLOCALn'a pas d'effet si le serveur ne le supporte pas. -
--password[=password], -p[password]Le mot de passe lors de la connexion au serveur. Si le mot de passe n'est pas donné en ligne de commande, il vous sera demandé. Notez que si vous utilisez la forme courte
-p, vous ne devez pas mettre d'espace entre l'option et le mot de passe. -
Chemin du dossier de module de MySQL Control Center.
-
Numéro de port TCP/IP pour la connexion.
-
Ouvre une fenêtre de requête au démarrage.
-
Ouvre la fenêtre de dialogue 'Register Server'.
-
Nom de la connexion de MySQL Control Center.
-
Fichier de socket à utiliser pour la connexion.
-
Active la coloration syntaxique et la complétion.
-
Fichier de syntaxe pour la complétion.
-
--translations_path=name, -T nameChemin jusqu'au dossier de traductions de MySQL Control Center.
-
--user=user_name, -u user_nameNom d'utilisateur.
-
Affiche la version.
Vous pouvez spécifier les variables suivantes avec l'option -O ou --set-variable.
-
connect_timeoutNombre de seconde avant que la connexion expire. (Valeur par défaut 0)
-
max_allowed_packetTaille maximale des paquets à échanger avec le serveur (Valeur par défaut 16777216)
-
max_join_sizeLimite automatique du nombre de lignes dans une jointure avec l'option
--safe-updates(Valeur par défaut 1000000) -
net_buffer_lengthBuffer de communication TCP/IP (Valeur par défaut 16384)
-
select_limitLimite automatique pour les commandes
SELECTavec l'option--safe-updates(Valeur par défaut 1000)
Notez que les syntaxes --set-variable=name=value et -O name=value sont obsolètes depuis MySQL 4.0. Utilisez --name=value.
Vous pouvez utiliser mysqlcheck comme outil d'entretien et de réparation pour les tables MyISAM. mysqlcheck est disponible depuis MySQL version 3.23.38.
mysqlcheck est similaire à myisamchk mais il fonctionne différemment. mysqlcheck doit être utilisé lorsque le serveur mysqld fonctionne, alors que myisamchk doit être utilisé lorsque le serveur ne fonctionne pas. L'intérêt st que vous n'avez plus besoin d'interrompre le serveur pour vérifier ou réparer vos tables.
mysqlcheck utilise les commandes du serveur MySQL CHECK, REPAIR, ANALYZE et OPTIMIZE, d'une manière pratique pour l'utilisateur.
Il y a trois fa¸ons différentes d'utiliser mysqlcheck :
shell>mysqlcheck [options] db_name [tables]shell>mysqlcheck [options] --databases DB1 [DB2 DB3...]shell>mysqlcheck [options] --all-databases
Il peut aussi être utilisé comme mysqldump lorsqu'il faut choisir les bases et tables à traiter.
mysqlcheck dispose d'une fonctionnalité spéciale, comparé aux autres clients : le comportement par défaut, c'est à dire la vérification des tables, peut être modifiée en renommant le fichier binaire. Si vous voulez avoir un fichier qui réparer les tables par défaut, il suffit de copier mysqlcheck sur votre disque, et de l'appeler mysqlrepair, ou bien, de faire un lien symbolique sur l'exécutable et de l'appeler mysqlrepair. Si vous appelez mysqlrepair, il va réparer les tables par défaut.
Les noms que vous pouvez utiliser pour que mysqlcheck réparer automatiquement les tables sont :
mysqlrepair |
L'option par défaut est --repair |
mysqlanalyze |
L'option par défaut est --analyze |
mysqloptimize |
L'option par défaut est --optimize |
Les options disponibles pour mysqlcheck sont listées ici. Vérifiez que votre version les supporte avec la commande mysqlcheck --help.
-
-?, --helpAffiche ce message d'aide, et termine.
-
--all-databases, -AVérifie toutes les bases. C'est la même chose que
--databasesdans toutes les bases sélectionnées. -
--all-in-1, -1Au lieu de faire une requête par table, exécute toutes les requêtes dans une requête, séparément pour chaque base. Les noms de tables seront séparés par une virgule.
-
--analyze, -aAnalyse les tables indiquées.
-
--auto-repairSi une table vérifiées est corrompue, la corrige automatiquement. La réparation sera faite après la vérification de toutes les tables, si des tables corrompues ont été découvertes.
-
--character-sets-dir=...Dossier contenant le jeu de caractères. See Section 5.8.1, « Le jeu de caractères utilisé pour les données et le stockage ».
-
--check, -cVérifie les tables en erreur
-
--check-only-changed, -CVérifie uniquement les tables qui ont été modifiées depuis la dernière modification, ou qui n'ont pas été correctement fermées.
-
--compressUtiliser la compression du protocole client/serveur.
-
--databases, -BPour tester plusieurs bases de données. Notez que la différence d'utilisation : dans ce cas, aucune table n'est précisé. Tous les arguments de noms sont considérés comme des noms de base.
-
--debug[=debug_options], -# [debug_options]Affiche le log de débogage. Souvent, la chaîne
debug_optionsvaut'd:t:o,nom_de_fichier'. -
--default-character-set=...Spécifie le jeu de caractères par défaut. See Section 5.8.1, « Le jeu de caractères utilisé pour les données et le stockage ».
-
--extended, -eSi vous utilisez cette option avec
CHECK TABLE, elle va s'assurer que la table est totalement cohérente, mais prendre un très long temps.Si vous utilisez cette option avec REPAIR TABLE, elle va réaliser une réparation exhaustive de la table, qui peut non seulement prendre un temps très long, mais produire de nombreuses lignes erronées.
-
--fast, -FNe vérifie que les tables qui n'ont pas été correctement fermées.
-
--force, -fContinue même si on rencontre une erreur SQL.
-
--host=host_name, -h host_nameConnexion à l'hôte.
-
--medium-check, -mPlus rapide que la vérification complète, mais ne trouvera que 99.99 % de toutes les erreurs. Cela devrait être la bonne option pour la plupart des situations.
-
--optimize, -oOptimise la table.
-
--password[=password], -p[password]Le mot de passe à utiliser lors de la connexion au serveur. Si aucun mot de passe n'est fourni, il sera demandé en ligne de commande. Il ne faut pas laisser d'espace entre l'option -p et le mot de passe.
-
--port=port_num, -P port_numLe numéro de port de la connexion.
-
--protocol={TCP | SOCKET | PIPE | MEMORY}Pour spécifier le protocole à utiliser pour la connexion. Nouveau en MySQL 4.1.
-
--quick, -qSi vous utilisez cette option avec
CHECK TABLE, elle va éviter que l'analyse ne traite toutes les lignes pour vérifier les mauvais liens. C'est la méthode d'analyse la plus rapide.Si vous utilisez cette option avec REPAIR TABLE, elle va essayer de ne réparer que le fichier d'index. C'est la méthode la plus rapide pour la réparation.
-
--repair, -rPeut corriger presque tout, sauf les problèmes de doublons pour les clés uniques.
-
--silent, -sAffiche moins de messages d'erreurs.
-
--socket=path, -S pathNom du fichier de socket à utiliser pour la connexion.
-
--tablesRemplace l'option
--databasesou-B. Tous les arguments suivants sont considérés comme des noms de tables. -
--user=user_name, -u user_nameNom d'utilisateur pour la connexion, si ce n'est pas l'utilisateur courant.
-
--verbose, -vAfficher des informations sur les différentes étapes.
-
--version, -VAffiche les informations de version, et termine.
Utilitaire qui permet d'exporter une base ou un groupe de bases vers un fichier texte, pour la sauvegarde ou le transfert entre deux serveurs (pas nécessairement entre serveurs MySQL). L'export contiendra les requêtes SQL nécessaires pour créer la table et la remplir.
Si vous faîtes une sauvegarde du serveur, vous devriez aussi utiliser la commande mysqlhotcopy. See Section 8.9, « mysqlhotcopy, copier les bases et tables MySQL ».
Il y a plusieurs méthodes pour invoquer mysqldump :
shell>mysqldump [options] db_name [tables]shell>mysqldump [options] --databases DB1 [DB2 DB3...]shell>mysqldump [options] --all-databases
Si vous ne spécifiez pas de table, ou si vous utilisez l'option --databases ou --all-databases, la base de données complète sera exportée.
Vous pouvez obtenir une liste des options valides pour votre version de mysqldump avec la commande mysqldump --help.
Notez que si vous exécutez mysqldump sans l'option --quick ou --opt, mysqldump va charger la totalité du résultat en mémoire, avant de l'écrire. Cette option peut résoudre des problèmes de mémoire si vous exportez de grosses tables.
Notez que si vous utilisez une nouvelles copie du programme mysqldump, et que vous allez faire un export qui sera lu dans une vieille version de MySQL, vous ne devriez pas utiliser les options --opt et -e.
Les valeurs numériques hors des plages de validité comme -inf et inf, ainsi que NaN (not-a-number, pas un nombre) sont exportées par mysqldump comme NULL. Vous pouvez le voir dans la table suivante :
mysql>CREATE TABLE t (f DOUBLE);mysql>INSERT INTO t VALUES(1e+111111111111111111111);mysql>INSERT INTO t VALUES(-1e111111111111111111111);mysql>SELECT f FROM t;+------+ | f | +------+ | inf | | -inf | +------+
Pour cette table, mysqldump produit l'export suivant :
-- -- Dumping data for table `t` -- INSERT INTO t VALUES (NULL); INSERT INTO t VALUES (NULL);
La signification de ce comportement est que si vous voulez exporter puis restaurer une table, le nouveau contenu sera peut être différent de l'original. Notez que depuis MySQL 4.1.2 vous ne pouvez pas insérer la valeur inf dans la table, et ce comportement de mysqldump ne sera pertinent qu'avec les anciens serveurs.
mysqldump supporte les options suivantes :
-
--help, -?Affiche le message d'aide et quitte.
-
--add-drop-tableAjoute une commande
drop tableavant chaque requête de création de table. -
--add-locksAjoute une commande
LOCK TABLESavant l'export de table et une commandeUNLOCK TABLEaprès(Pour accélérer les insertions dans MySQL). See Section 7.2.14, « Vitesse des requêtesINSERT». -
--all-databases, -AExporte toutes les tables. C'est l'équivalent de l'option
--databasesavec toutes les bases de données sélectionnées. -
--allow-keywordsPermet la création de colonnes ayant des noms de mots réservés. Cela fonctionne en préfixant chaque nom de colonne avec le nom de la table.
-
--comments[={0|1}]Si cette option prend
0, elle supprime les informations additionnelles (comme les versions de programme, les versions d'hôte) dans les exports. L'option--skip-commentsfait la même chose. Par défaut, la valeur de cette option est1, pour conserver ces informations. Nouveau en MySQL 4.0.17. -
--compatible=nameProduit un résultat qui est compatible avec les autres bases de données, ou avec d'anciennes versions de MySQL. Les valeurs possibles de
namesontmysql323,mysql40,postgresql,oracle,mssql,db2,sapdb,no_key_options,no_table_options, ouno_field_options. Pour utiliser plusieurs valeurs, séparez les par des virgules. Ces valeurs ont la même signification que les options correspondantes de configuration du mode SQL. See Section 5.2.2, « Le mode SQL du serveur ».Cette option requiert la version 4.1.0 ou plus récente. Avec les anciens serveurs, cela ne fait rien.
-
--complete-insert, -cUtilise des commandes
INSERTcomplètes, avec les noms de colonnes. -
-C, --compressCompresse toutes les informations entre le client et le serveur, les deux supporte la compression.
-
--create-optionsInclut toutes les options spécifiques MySQL de création de table dans les commandes
CREATE TABLE. Avant MySQL 4.1.2, utilisez--all. -
--databases, -BPour exporter plusieurs bases de données. Notez la différence d'utilisation. Dans ce cas, aucune table n'est spécifié. Tous les arguments de noms sont considérés comme des noms de base. Une ligne
USE db_name;sera ajoutée dans l'export avant chaque base de données. -
--debug[=debug_options], -# [debug_options]Active l'historique de débogage. La chaîne de format est généralement
'd:t:o,file_name'. -
--default-character-set=charsetConfigure le jeu de caractères par défaut pour l'export. S'il n'est pas spécifié,
mysqldump10.3 (MySQL-4.1.2) ou plus récent va utiliserutf8. Les versions plus anciennes utiliserontlatin1. -
--delayedLes insertions se font avec la commande
INSERT DELAYED. -
--delete-master-logsSur un maître de réplication, efface le log binaire une fois que l'opération d'export est faite. Cette option active automatiquement
--first-slave. Elle a été ajoutée en MySQL 3.23.57 (pour MySQL 3.23) et MySQL 4.0.13 (pour MySQL 4.0). -
--disable-keys, -KPour chaque table, entoure les commandes d'
INSERTavec les commandes/*!40000 ALTER TABLE tbl_name DISABLE KEYS */;et/*!40000 ALTER TABLE tbl_name ENABLE KEYS */;. Cela accélère les chargements du fichier d'export pour MySQL 4.0 car les index ne sont créés qu'après l'insertion. Cette option n'est effective que pour les tablesMyISAM. -
--extended-insert, -eUtilise la nouvelle syntaxe multi-ligne
INSERT. (Cela donne des insertions plus courtes et plus efficaces). -
--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...Ces options sont utilisées avec l'option
-Tet ont la même signification que les clauses correspondantes de la commandeLOAD DATA INFILE. See Section 13.1.5, « Syntaxe deLOAD DATA INFILE». -
--first-slave, -xVerrouille toutes les tables de toutes les bases de données.
-
--flush-logs, -FEcrit tout le fichier de log du serveur avant de commencer l'export. Notez que si vous utilisez cette option avec
--all-databases(ou l'option-A), les logs seront vidés pour chaque base de données exportée. -
-f, --force,Continue même si une erreur SQL survient durant l'export.
-
--host=host_name, -h host_nameExporte les données depuis le serveur MySQL vers l'hôte indiqué. L'hôte par défaut est
localhost. -
--lock-tables, -lVerrouille toutes les tables avant de commencer l'export. Les tables sont verrouillées avec
READ LOCALpour permettre des insertions concurrentes sur les tablesMyISAM.Notez que lorsque vous exportes des tables de bases différentes, l'option
--lock-tablesva verrouiller chaque base séparément. Cette option ne vous garantira pas que vos tables seront logiquement cohérente entre les bases. Des tables de différentes bases pourraient être exportées dans des états très différents. -
--master-dataCette option est similaire à
--first-slave, mais produit aussi une commandeCHANGE MASTER TOqui fait que le serveur esclave va commencer à la bonne position dans le log du maître, si vous utilisez cette exportation pour configurer initialement l'esclave. -
--no-create-db, -nCREATE DATABASE /*!32312 IF NOT EXISTS*/ db_name;ne sera pas ajouté dans l'export. Sinon, la ligne ci-dessus sera ajoutée, si l'une des options--databasesou--all-databasesont été activée. -
--no-create-info, -tN'écrit pas les informations de création de table (la requête
CREATE TABLE). -
--no-data, -dN'écrit aucune ligne d'informations sur la table. C'est très pratique si vous voulez simplement exporter la structure de la table.
-
--optIdentique à
--quick --add-drop-table --add-locks --extended-insert --lock-tables. Vous obtiendrez l'export le plus rapide à importer dans un serveur MySQL. -
--password[=password], -p[password]Le mot de passe à utiliser lors de la connexion au serveur. Notez que si vous utilisez l'option courte
-p, vous ne devez pas laisser d'espace entre l'option et le mot de passe. Si vous spécifiez en omettant la partie ‘=your_pass’,mysqldumpvous demandera le mot de passe en ligne de commande. -
--port=port_num, -P port_numLe port TCP/IP à utiliser avec l'hôte.
-
--protocol={TCP | SOCKET | PIPE | MEMORY}Pour spécifier le protocole de connexion à utiliser. Nouveau en MySQL 4.1.
-
--quick, -qNe garde pas en buffer les requêtes, mais écrit immédiatement dans la sortie. Utilise
mysql_use_result()pour cela. -
--quote-names, -QProtège les noms des tables et colonnes avec le caractère ‘
`’. -
--result-file=file, -r fileEcrit directement dans le fichier indiqué. Cette option doit être utilisé sur MSDOS, car cela évite que la nouvelle ligne ‘
\n’ soient converties en ‘\n\r’ (nouvelle ligne et retour chariot). -
--single-transactionCette option ajoute la commande SQL
BEGINavant d'exporter les données vers le serveur. C'est généralement pratique pour les tablesInnoDBet le niveau d'isolation de transactionREAD_COMMITTED, car ce mode va exporter l'état de la base au moment de la commandeBEGINsans bloquer les autres applications.Lorsque vous utilisez cette option, pensez bien que seules les tables transactionnelles seront exportées dans un état cohérent, c'est à dire que les tables
MyISAMouHEAPqui seront exportées avec cette option, pourront changer d'état.L'option
--single-transactiona été ajoutée en version 4.0.2. Cette option est mutuellement exclusive avec l'option--lock-tablescarLOCK TABLESva valider une transaction interne précédente. -
--socket=path, -S pathLe fichier de socket à utiliser pour les connexions locale (à
localhost), qui est l'hôte par défaut. -
--skip-commentsIdentique à que
--comments=0. -
--tab=path, -T pathCrée un fichier
table_name.sql, qui contient les commandes SQLCREATE, et un fichiertable_name.txt, qui contient les données, pour chaque table. Le format du fichier.txtest celui qui est spécifié par les options--fields-xxxet--lines--xxx. Note : cette option ne fonctionne qui simysqldumpest exécuté sur la même machine que le démonmysqld, et que le nom d'utilisateur et le groupe demysqld(normalement l'utilisateurmysql, et le groupemysql) doivent avoir des permission pour créer et écrire un fichier dans le dossier que vous spécifiez. -
--tablesRemplace l'option
--databasesou-B. Tous les arguments suivant les options sont considérés comme des noms de tables. -
--user=user_name, -u user_nameLe nom d'utilisateur MySQL lors de la connexion à un serveur distant.
-
--verbose, -vMode détaillé. Affiche plus d'informations sur les faits et gestes du programme.
-
--version, -VAffiche la version du programme et quitte.
-
--where='where-condition', -w 'where-condition'Exporte uniquement les lignes sélectionnées. Notez que les guillemets sont obligatoires.
Exemples :
"--where=user='jimf'" "-wuserid>1" "-wuserid<1"
-
-X, --xmlExporte la base au format XML.
Vous pouvez aussi configurer les variables systèmes suivantes avec la syntaxe --var_name=value :
-
max_allowed_packetLa taille maximale du buffer pour les communications client / serveur. La valeur de cette variable peut être au maximum de 16 Mo avant MySQL 4.0, et jusqu'à 1 Go depuis MySQL 4.0. Lors de la création de commandes d'insertions multiples (avec l'option
--extended-insertou--opt),mysqldumpva créer des lignes ayant une taille maximale demax_allowed_packetoctets. Si vous augmentez la valeur de cette variable, assurez vous quemax_allowed_packetest assez grande dans le serveur. -
net_buffer_lengthLa taille initiale du buffer de communication.
Il est aussi possible de configurer les variables en utilisant --set-variable=var_name=value ou -O var_name=value. Mais cette syntaxe est obsolète depuis MySQL 4.0.
L'usage normal de mysqldump est probablement de faire des sauvegardes de bases.
mysqldump --opt database > backup-file.sql
Vous pouvez importer les données dans la base MySQL avec :
mysql database < backup-file.sql
ou
mysql -e "source /patch-to-backup/backup-file.sql" database
Cependant, il est très pratique pour remplir un autre serveur MySQL avec des informations depuis une base :
mysqldump --opt database | mysql ---host=remote-host -C database
Il est possible d'exporter plusieurs bases de données en une seule commande :
mysqldump --databases database1 [database2 ...] > my_databases.sql
Si vous souhaitez exporter toutes les bases, vous pouvez utiliser :
mysqldump --all-databases > all_databases.sql
Pour plus d'informations sur les sauvegardes, voyez Section 5.7.1, « Sauvegardes de base de données ».
mysqlhotcopy est un script Perl qui utilise LOCK TABLES, FLUSH TABLES et cp ou scp pour faire rapidement des sauvegardes de bases. C'est la méthode la plus rapide pour faire une sauvegarde. C'est aussi le moyen le plus sûr pour copier des tables et bases, mais il ne peut fonctionner que sur la machine qui contient les fichiers de données. mysqlhotcopy fonctionne uniquement sous Unix, et il ne fonctionne qu'avec les tables de type MyISAM et ISAM.
shell> mysqlhotcopy db_name [/path/to/new_directory]
shell> mysqlhotcopy db_name_1 ... db_name_n /path/to/new_directory
shell> mysqlhotcopy db_name./regex/
mysqlhotcopy supporte les options suivantes :
-
-?, --helpAffiche un écran d'aide et quitte.
-
--allowoldNe pas annuler si la sauvegarde existe déjà (renomme la simplement en _old)
-
--checkpoint=db_name.tbl_nameInsère un point de contrôle dans la table spécifiée (base.table)
-
--debugActive le débogage.
-
--dryrun, -nRapporte les actions réalisées sans les faire.
-
--flushlogVide les logs sur le disque une fois que toutes les tables sont verrouillées.
-
--keepoldNe pas effacer une sauvegarde précédente (celle qui a été renommée) lorsque c'est terminé.
-
--method=#Méthode de copie (
cpouscp). -
--noindicesNe pas inclure les fichiers d'index complet dans la copie, pour faire des fichiers de sauvegarde plus petit et plus rapide. Les index peuvent toujours être reconstruits plus tard avec
myisamchk -rq.. -
-p, --password=#Mot de passe utilisé pour la connexion au serveur.
-
--port=port_num, -P port_numPort utilisé pour la connexion au serveur.
-
--quiet, -qMode silencieux. N'affiche que les erreurs.
-
--regexp=exprCopie toutes les bases dont le nom vérifie un masque d'expression régulière.
-
--socket=path, -S pathSocket utilisée pour la connexion au serveur.
-
--suffix=strSuffixe des noms des bases copiées.
-
--tmpdir=pathDossier temporaire (au lieu de
/tmp). -
--user=user_name, -u user_nameNom d'utilisateur pour la connexion au serveur.
Vous pouvez essayer perldoc mysqlhotcopy pour avoir plus de documentation sur mysqlhotcopy.
mysqlhotcopy lit les options du groupe [client] et [mysqlhotcopy] dans le fichier d'options.
Pour être capable d'exécuter mysqlhotcopy, vous avez besoin des droits d'écriture dans le dossier de sauvegarde, et le droit de SELECT dans les tables que vous souhaitez copier, ainsi que les droits MySQL de RELOAD (pour utiliser la commande FLUSH TABLES).
shell> perldoc mysqlhotcopy
mysqlimport fournit une interface en ligne de commande à la commande SQL LOAD DATA INFILE. La plupart des options de mysqlimport correspondent directement aux mêmes options de LOAD DATA INFILE. See Section 13.1.5, « Syntaxe de LOAD DATA INFILE ».
mysqlimport est appelé comme ceci :
shell> mysqlimport [options] database textfile1 [textfile2 ...]
Pour chaque fichier texte indiqué dans la ligne de commande, mysqlimport supprime toute extension du nom du fichier, et utilise le résultat pour déterminer le nom de la table qui va recevoir le contenu du fichier. Par exemple, pour des fichiers appelés patient.txt, patient.text et patient seront tous importés dans la table patient.
mysqlimport supporte les options suivantes :
-
--help, -?Affiche le message d'aide et quitte.
-
--columns=column_list, -c column_listCette option prend une liste de noms de colonnes, séparés par des virgules. Ce champs est utilisé pour créer une commande
LOAD DATA INFILEcorrecte, qui sera alors passée à MySQL. -
--compress, -CCompresse toutes les informations entre le client et le serveur, si c'est possible.
-
--debug[=debug_options], -# [debug_options]Active le débogage. la valeur de
debug_optionsest souvent :'d:t:o,file_name'. -
--delete, -DVide la table avant d'importer le fichier texte.
-
--fields-terminated-by=...,--fields-enclosed-by=...,--fields-optionally-enclosed-by=...,--fields-escaped-by=...,--lines-terminated-by=...Ces options ont la même signification que les clauses correspondantes de
LOAD DATA INFILE. See Section 13.1.5, « Syntaxe deLOAD DATA INFILE». -
--force, -fIgnore les erreurs. Par exemple, si une table n'existe pas pour un fichier texte,
mysqlimportva continuer de traiter les autres fichiers. Sans--force,mysqlimportse termine dès qu'une erreur survient. -
--host=host_name, -h host_nameImporte les données sur le serveur MySQL, avec l'hôte spécifié. La valeur par défaut est
localhost. -
--ignore, -iVoir la description de
--replace. -
--ignore-lines=nIgnore les
npremières lignes du fichier de données. -
--local, -LLit le fichier d'entrée dans le client. Par défaut, les fichiers textes sont supposés être lus par le serveur, si vous vous connectez à
localhost(qui l'hôte par défaut). -
--lock-tables, -lVerrouille toutes les tables en écriture avant de ne traiter les fichiers textes. Cela assure que toutes les tables sont synchronisée sur le serveur.
-
--password[=password], -p[password]Le mot de passe à utiliser lors de la connexion au serveur. Notez que si vous utilisez l'option courte (
-p), vous ne pouvez pas laisser d'espace entre l'option est le mot de passe. Si vous ne spécifiez pas le mot de passe avec l'option,mysqlimportva vous demander le mot de passe en ligne. -
--port=port_num, -P port_numLe port TCP/IP utilisé avec l'hôte. Cela sert pour les connexions à des hôtes qui ne sont pas
localhost, pour lequel la socket Unix est utilisée. -
--protocol={TCP | SOCKET | PIPE | MEMORY}Spécifie le protocole à utiliser pour se connecter. Nouveau en MySQL version 4.1.
-
--replace, -rLes options
--replaceet--ignorecontrôles la gestion des lignes lues envers les lignes qui existent déjà sur le serveur. Si vous spécifiez l'option--replace, les nouvelles lignes remplaceront les lignes existantes. Si vous spécifiez--ignore, les lignes qui sont en double dans une table qui dispose d'une colonne de type unique. Si vous ne spécifiez pas ces options, une erreur surviendra lorsqu'une clé en double sera trouvée, et la lecture du reste du fichier sera annulé. -
--silent, -sMode silencieux. N'affiche que les erreurs qui surviennent.
-
--socket=path, -S pathLe fichier de socket à utiliser lors de la connexion à
localhost(qui est l'hôte par défaut). -
--user=user_name, -u user_nameLe nom de l'utilisateur MySQL à utiliser lors de la connexion au serveur MySQL. La valeur par défaut est celui de votre utilisateur Unix.
-
--verbose, -vMode détaillé. Affiche bien plus d'informations sur les actions du programme.
-
--verbose, -vAffiche la version et quitte.
Voici un exemple d'utilisation de mysqlimport :
$ mysql --version mysql Ver 9.33 Distrib 3.22.25, for pc-linux-gnu (i686) $ uname -a Linux xxx.com 2.2.5-15 #1 Mon Apr 19 22:21:09 EDT 1999 i586 unknown $ mysql -e 'CREATE TABLE imptest(id INT, n VARCHAR(30))' test $ ed a 100 Max Sydow 101 Count Dracula . w imptest.txt 32 q $ od -c imptest.txt 0000000 1 0 0 \t M a x S y d o w \n 1 0 0000020 1 \t C o u n t D r a c u l a \n 0000040 $ mysqlimport --local test imptest.txt test.imptest: Records: 2 Deleted: 0 Skipped: 0 Warnings: 0 $ mysql -e 'SELECT * FROM imptest' test +------+---------------+ | id | n | +------+---------------+ | 100 | Max Sydow | | 101 | Count Dracula | +------+---------------+
mysqlshow peut être utilisé pour lister les bases qui existent, leurs tables et leurs colonnes.
Avec le programme mysql vous pouvez obtenir des informations avec la commande SHOW. Les mêmes informations sont disponibles en utilisant ces commandes directement. Par exemple, vous pouvez utiliser le client mysql. See Section 13.5.3, « Syntaxe de SHOW ».
mysqlshow est utilisé comme ceci :
shell> mysqlshow [OPTIONS] [database [table [column]]]
-
Si aucune base n'est indiquée, toutes les bases de données sont listées.
-
Si aucune table n'est nommée, toutes les tables de la base sont affichées.
-
Si aucune colonne n'est nommée, toutes les colonnees et leur type sont affichés.
Notez que dans les nouvelles versions de MySQL, vous ne verrez que les bases de données, tables et colonnes pour lesquelles vous avez des droits.
Si le dernier argument contient un caractère joker shell ou SQL (‘*’, ‘?’, ‘%’ ou ‘_’) alors seules les entités qui valident ce masque sont affichées. Si une base contient des caractères soulignés, ils doivent être protégés avec un anti-slash (certains shell Unix en demande même deux), afin de lister correctement les tables et les colonnes. Les ‘*’ et ‘?’ sont convertis en joker SQL ‘%’ and ‘_’. Cela peut causer des confusions lorsque vous essayez d'afficher des colonnes qui contiennent un souligné ‘_’, comme c'est le cas avec mysqlshow qui ne vous affiche que les colonnes qui vérifient le masque. Ceci est facilement corrigé en ajoutant un caractère ‘%’ en plus dans la ligne de commande (comme argument séparé).
mysqlshow supporte les options suivantes :
-
--help, -?Affiche cette aide et quitte.
-
--character-sets-dir=pathLe dossier où les jeux de caractères sont créés. See Section 5.8.1, « Le jeu de caractères utilisé pour les données et le stockage ».
-
--compress, -CUtilise la compression avec le protocole client / serveur.
-
--debug[=debug_options], -# [debug_options]Génère un log de débogage. La chaîne
debug_optionsvaut souvent'd:t:o,file_name'. Par défaut, la valeur est'd:t:o,/tmp/mysql.trace'. -
--default-character-set=charsetConfigure le jeu de caractères par défaut. See Section 5.8.1, « Le jeu de caractères utilisé pour les données et le stockage ».
-
--host=host_name, -h host_nameConnexion avec l'hôte indiqué.
-
--keys, -kAffiche les index de la table.
-
--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_numLe numéro de port TCP/IP pour la connexion.
-
--protocol={TCP | SOCKET | PIPE | MEMORY}Spécifie le protocole de connexion à utiliser. Nouveau en MySQL version 4.1.
-
--socket=path, -S pathLe fichier de socket à utiliser pour la connexion.
-
--status, -iAffiche des informations supplémentaires sur chaque table.
-
--user=user_name, -u user_nameNom d'utilisateur pour la connexion, si ce n'est pas l'utilisateur Unix courant.
-
--verbose, -vAffichage plus détaillé (
-v -v -vindique le format d'affichage de table). -
--version, -VAffiche la version et quitte.
Pour la plupart des erreurs système, MySQL va, en plus d'un message interne, aussi afficher un code d'erreur, dans l'un des styles suivants :
message ... (errno: #) message ... (Errcode: #)
Vous pouvez découvrir ce que ce code d'erreur signifie soit en examinant la documentation de votre système, soit en utilisant l'utilitaire perror.
perror affiche une description pour le code d'erreur, ou, pour une erreur du gestionnaire de tables MyISAM/ISAM.
perror est appelé comme ceci :
shell> perror [options] errorcode ...
Exemple :
shell> perror 13 64
Error code 13: Permission denied
Error code 64: Machine is not on the network
Notez que les messages d'erreurs sont dépendants du système. Un message d'erreur peut avoir différentes explications sur différents systèmes.
L'utilitaire replace modifie les chaînes dans des fichiers. Elle utilise une machine à états finis pour rechercher d'abord les plus grandes chaînes. Elle peut être utilisée pour faire des échanges de chaînes, entre les chaînes a et b de deux fichiers file1 et file2:
shell> replace a b b a -- file1 file2 ...
Utilisez l'option -- pour indiquer où la liste de chaînes de remplacement s'arrête, et où commence la liste de fichiers.
Tout fichier nommé en ligne de commande est modifié directement : il est recommandé de faire des sauvegardes de fichiers originaux.
Si aucun fichier n'est nommé en ligne de commande, replace lit l'entrée standard, et écrit dans la sortie standard. Dansa ce cas, aucune option -- n'est nécessaire.
Le programme replace sert à msql2mysql. See Section 24.1.1, « msql2mysql, convertit des programmes mSQL vers MySQL ».
replace supporte les options suivantes :
-
-?, -IAffiche le message d'aide et quitte.
-
-# debug_optionsÉcrit un log de débogage. La chaîne
debug_optionsvaut souvent'd:t:o,file_name'. -
-sMode silencieux. Affiche moins d'informations sur les activités du programme.
-
-vMode prolifique. Affiche plus d'informations sur les activités du programme.
-
-VAffiche la version, et quitte.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
Remonter 
