Table des matières
myisampack
, le générateur de tables MySQL
compressées en lecture seulemysql
, l'outil en ligne de commandemysqladmin
, administration d'un serveur MySQLmysqlbinlog
, Exécuter des requêtes dans le log
binairemysqlcc
, MySQL Control Centermysqlcheck
pour l'entretien et la
réparationmysqldump
, sauvegarde des structures de tables et les
donnéesmysqlhotcopy
, copier les bases et tables MySQLmysqlimport
, importer des données depuis des
fichiers texteperror
, expliquer les codes d'erreursreplace
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
MyISAM
pour 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. à
mysqladmin
permet 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 mysqlcheck
pour 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
MyISAM
et ISAM
alors 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 ».
replace
modifie des chaînes dans des
fichiers, ou sur l'entrée standard. See
Section 8.13, « L'utilitaire de remplacement de chaînes replace
».
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 mysqld
a été appelé avec l'option
--skip-external-locking
, ce n'est pas une
bonne idée que d'appeler myisampack
si 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é.
myisampack
peut aussi compresser des
colonnes BLOB
ou TEXT
.
L'ancien pack_isam
(pour les tables
ISAM
) 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, -b
Fait 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_options
vaut souvent
'd:t:o,filename'
.
--force, -f
Force la compression de la table, même si elle grossit ou si
le fichier temporaire existe déjà.
myisampack
crée un fichier temporaire
appelé tbl_name.TMD
lors de la
compression. Si vous tuez myisampack
, le
fichier .TMD
peut ne pas être effacé.
Normalement, myisampack
se termine avec une
erreur s'il découvre que le fichier
tbl_name.TMD
existe. Avec
--force
, myisampack
reprendra le travail.
--join=big_tbl_name, -j big_tbl_name
Rassemble 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.
(myisampack
stocke toutes les lignes avec
des pointeurs de lignes de 1, 2 ou 3 octets. Dans les cas
normaux, myisampack
peut 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,
myisampack
va imprimer une note pour que
vous le sachiez lors de la prochaine compression du même
fichier.
--silent, -s
Mode silencieux. Seules les erreurs seront affichées.
--test, -t
Ne compresse pas la table, mais teste juste la compression.
--tmp_dir=path, -T path
Utilise le dossier indiqué comme dossier pour les fichiers temporaires.
--verbose, -v
Mode détaillé. Toutes les informations sur la progression de la compression seront affichées.
--version, -V
Affiche la version et quitte.
--wait, -w
Attend et reessaie, si la table était déjà en cours
d'utilisation. Si le serveur mysqld
a été
démarré avec l'option
--skip-external-locking
, ce n'est pas une
bonne idée d'appeler myisampack
, 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 station
MyISAM 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.MYI
Compressing 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 station
MyISAM 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 :
normal
Le nombre de colonnes pour lesquelles aucune compression n'est utilisée.
empty-space
Le nombre de colonnes dont les valeurs ne contiennent que des octets : elles n'occuperont plus qu'un octet.
empty-zero
Le nombre de colonnes dont les valeurs ne contiennent que des zéros : elles n'occuperont plus qu'un octet.
empty-fill
Le 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
INTEGER
sera transformée en
MEDIUMINT
).
pre-space
Le 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-space
Le nombre de colonnes qui ont de nombreux espaces terminaux. Dans ce cas, chaque valeur va contenir un compte du nombre d'espaces terminaux.
table-lookup
La colonne n'a que quelques valeurs différentes, qui seront
converties en une colonne de type ENUM
avant une compression de type Huffman.
zero
Le nombre de colonnes pour lesquelles toutes les valeurs sont zéro.
Original trees
Le nombre initial d'arbres Huffman.
After join
Le 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 :
Type
Le type de fichier peut contenir les informations suivantes :
constant
Toutes les lignes ont la même valeur.
no endspace
Ne stocke pas les espaces finaux.
no endspace, not_always
Ne stocke pas les espaces finaux et ne compresse pas les espaces finaux pour toutes les valeurs.
no endspace, no empty
Ne stocke pas les espaces finaux. Ne stocke pas les valeurs vides.
table-lookup
La colonne a été convertie en ENUM
.
zerofill(n)
Les n
chiffres significatifs sont
toujours 0, et n'ont pas été stockés.
no zeros
Ne stocke pas les zéros.
always zero
Les valeurs 0 sont stockées sur un octet.
Huff tree
L'arbre Huffman associé au champ.
Bits
Le 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_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'
.
Affiche des informations de débogage lorsque le programme se termine.
--default-character-set=charset
Configure 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 statement
Exé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_name
Connexion 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_SPACE
de la section
Section 5.2.2, « Le mode SQL du serveur ».
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é.
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
mysql
se lance plus rapidement, mais vous
devez utiliser la commande rehash
si 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, 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.
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
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
Section 8.3.1, « 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.
Le numéro de port TCP/IP pour la connexion.
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 Section 8.3.1, « Commandes mysql
».
--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, -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
Section 8.3.3, « Conseils avec mysql
» 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_name
Nom d'utilisateur pour la connexion, si ce n'est pas l'utilisateur Unix courant.
Affichage plus détaillé (-v -v -v
indique
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_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.
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_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
:
shell> ln -s /dev/null $HOME/.mysql_history
Il 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.txt
Vous 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 -S
de less
rend 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
-S
dans less
pour
activer ou désactiver la navigation horizontale. Pour plus
d'informations, voyez le manuel de
less
:
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 -S
Dans 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
/dr1
et /dr2
, mais
affichera toujours le résultat à l'écran via
less
.
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
prompt
dans le fichier d'options MySQL,
comme /etc/my.cnf
ou
.my.cnf
, dans le groupe
mysql
. 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
prompt
dans 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'options my.cnf
». Ce recoupement peut
vous causer des problèmes avec des anti-slashs uniques. Par
exemple, \s
sera 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
format HH:MM:SS>
:
[mysql] prompt="\\r:\\m:\\s> "
Utilisez une option de ligne de commande
Vous pouvez utiliser l'option --prompt
dans
la commande mysql
. 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
UPDATE
et DELETE
à
moins que vous ne spécifiez une contrainte de clé dans
la clause WHERE
où que vous
fournissiez une clause LIMIT
, 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
SELECT
sont automatiquement limités à
1000, à moins que la commande n'inclut la clause
LIMIT
.
Les commandes SELECT
multi-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 databasename
Crée une nouvelle base.
drop databasename
Efface une base et toutes ces tables.
extended-status
Affiche un message de statut du serveur très complet.
flush-hosts
Vide tous les hôtes mis en cache.
flush-logs
Vide de la mémoire tous les logs.
flush-privileges
Recharger les tables de droits (identique à la commande reload).
flush-status
Remet à zéro les variables de statut.
flush-tables
Vide de la mémoire toutes les tables.
flush-threads
Vide les threads de cache. Nouveau en MySQL 3.23.16.
kill id,id,...
Termine un thread MySQL.
password new-password
Spécifie un nouveau mot de passe. Modifie l'ancien mot de
passe en new-password
pour le compte que
vous utilisez lors de la connexion avec
mysqladmin
.
ping
Vérifie si mysqld fonctionne ou pas.
processlist
Affiche la liste des processus du serveur. Cela revient à la
commande SHOW PROCESSLIST
. Si
--verbose
est utilisé, le résultat est le
même que SHOW FULL PROCESSLIST
.
reload
Recharge les tables de droits.
refresh
Vide de la mémoire toutes les tables, puis ferme et réouvre les fichiers de logs.
shutdown
Eteind le serveur.
slave-start
Démarre l'esclave de réplication.
status
Affiche le message de statut court du serveur.
slave-stop
Eteind l'esclave de réplication.
variables
Affiche les variable disponibles.
version
Affiche 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_time
secondes. See
Section 5.9.5, « Le log des requêtes lentes ».
Combien de tables sont ouvertes par mysqld
.
Nombre de commandes flush ...
,
refresh
et reload
.
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=path
Le 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, -C
Compresse 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_options
est souvent
'd:t:o,file_name'
. La valeur par défaut
est 'd:t:o,/tmp/mysqladmin.trace'
.
--force, -f
Ne 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_name
Connexion 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_num
Le 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, -r
Affiche 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 commande extended-status
.
--silent, -s
Mode très silencieux.
--sleep=delay, -i delay
Exécute les commandes encore et encore, avec
delay
secondes entre deux.
--socket=path, -S path
Le fichier de socket à utiliser pour la connexion.
--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
Print 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_timeout
Le nombre de secondes avant une éxpiration de connexion. (Par défaut, 0.)
shutdown_timeout
Le 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 options suivantes :
--help, -?
Affiche cette aide et quitte.
--database=db_name, -d db_name
Limite les lignes à cette base de données (log local uniquement).
--force-read, -f
Continue même si vous obtenez une erreur SQL.
--host=host_name, -h host_name
Lit le log binaire depuis le serveur MySQL distant.
--local-load=path, -l path
Prépare les fichiers temporaires destinés aux commandes
LOAD DATA INFILE
dans le dossier
spécifié.
--offset=N, -o N
Ignore les N
premiè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_num
Le numéro de port TCP/IP pour la connexion.
--position=N, -j N
Comment 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, -R
Read 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
, --socket
et
--user
.
--result-file=name, -r name
Export direct vers le fichier spécifié.
--short-form, -s
Affiche uniquement les commandes du log, sans les informations supplémentaires.
--socket=path, -S path
Le fichier de socket à utiliser pour la connexion.
--user=user_name, -u user_name
Le nom d'utilisateur MySQL lors de la connexion à distance.
--version, -V
Affiche la version et quitte.
Vous pouvez aussi configurer les variables suivantes avec l'option
--var_name=value
:
open_files_limit
Spé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.sql
shell>mysqlbinlog hostname-bin.000002 >> /tmp/statements.sql
shell>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 name
Synonyme de --server
.
--database=db_name, -d db_name
Base 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_name
Hôte de connexion.
Active ou désactive les fonctionnalités
LOCAL
de LOAD DATA
INFILE
. Sans valeur, cette option active
LOCAL
. LOCAL
peut être
spécifié sous la forme --local-infile=0
ou
--local-infile=1
pour être désactivée ou
activée. Activer LOCAL
n'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 name
Chemin jusqu'au dossier de traductions de MySQL Control Center.
--user=user_name, -u user_name
Nom d'utilisateur.
Affiche la version.
Vous pouvez spécifier les variables suivantes avec l'option
-O
ou --set-variable
.
connect_timeout
Nombre de seconde avant que la connexion expire. (Valeur par défaut 0)
max_allowed_packet
Taille maximale des paquets à échanger avec le serveur (Valeur par défaut 16777216)
max_join_size
Limite automatique du nombre de lignes dans une jointure avec
l'option --safe-updates
(Valeur par défaut
1000000)
net_buffer_length
Buffer de communication TCP/IP (Valeur par défaut 16384)
select_limit
Limite automatique pour les commandes
SELECT
avec 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
.
-?, --help
Affiche ce message d'aide, et termine.
--all-databases, -A
Vérifie toutes les bases. C'est la même chose que
--databases
dans toutes les bases
sélectionnées.
--all-in-1, -1
Au 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, -a
Analyse les tables indiquées.
--auto-repair
Si 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, -c
Vérifie les tables en erreur
--check-only-changed, -C
Vérifie uniquement les tables qui ont été modifiées depuis la dernière modification, ou qui n'ont pas été correctement fermées.
--compress
Utiliser la compression du protocole client/serveur.
--databases, -B
Pour 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_options
vaut
'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, -e
Si 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, -F
Ne vérifie que les tables qui n'ont pas été correctement fermées.
--force, -f
Continue même si on rencontre une erreur SQL.
--host=host_name, -h host_name
Connexion à l'hôte.
--medium-check, -m
Plus 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, -o
Optimise 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_num
Le 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, -q
Si 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, -r
Peut corriger presque tout, sauf les problèmes de doublons pour les clés uniques.
--silent, -s
Affiche moins de messages d'erreurs.
--socket=path, -S path
Nom du fichier de socket à utiliser pour la connexion.
--tables
Remplace l'option --databases
ou
-B
. Tous les arguments suivants sont
considérés comme des noms de tables.
--user=user_name, -u user_name
Nom d'utilisateur pour la connexion, si ce n'est pas l'utilisateur courant.
--verbose, -v
Afficher des informations sur les différentes étapes.
--version, -V
Affiche 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-table
Ajoute une commande drop table
avant chaque
requête de création de table.
--add-locks
Ajoute une commande LOCK TABLES
avant
l'export de table et une commande UNLOCK
TABLE
après(Pour accélérer les insertions dans
MySQL). See Section 7.2.14, « Vitesse des requêtes INSERT
».
--all-databases, -A
Exporte toutes les tables. C'est l'équivalent de l'option
--databases
avec toutes les bases de données
sélectionnées.
--allow-keywords
Permet 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-comments
fait la même chose. Par
défaut, la valeur de cette option est 1
,
pour conserver ces informations. Nouveau en MySQL 4.0.17.
--compatible=name
Produit un résultat qui est compatible avec les autres bases
de données, ou avec d'anciennes versions de MySQL. Les
valeurs possibles de name
sont
mysql323
, mysql40
,
postgresql
, oracle
,
mssql
, db2
,
sapdb
, no_key_options
,
no_table_options
, ou
no_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, -c
Utilise des commandes INSERT
complètes,
avec les noms de colonnes.
-C, --compress
Compresse toutes les informations entre le client et le serveur, les deux supporte la compression.
--create-options
Inclut toutes les options spécifiques MySQL de création de
table dans les commandes CREATE TABLE
.
Avant MySQL 4.1.2, utilisez --all
.
--databases, -B
Pour 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=charset
Configure le jeu de caractères par défaut pour l'export.
S'il n'est pas spécifié, mysqldump
10.3
(MySQL-4.1.2) ou plus récent va utiliser
utf8
. Les versions plus anciennes
utiliseront latin1
.
--delayed
Les insertions se font avec la commande INSERT
DELAYED
.
--delete-master-logs
Sur 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, -K
Pour chaque table, entoure les commandes
d'INSERT
avec 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 tables MyISAM
.
--extended-insert, -e
Utilise 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
-T
et ont la même signification que les
clauses correspondantes de la commande LOAD DATA
INFILE
. See Section 13.1.5, « Syntaxe de LOAD DATA INFILE
».
--first-slave, -x
Verrouille toutes les tables de toutes les bases de données.
--flush-logs, -F
Ecrit 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_name
Exporte les données depuis le serveur MySQL vers l'hôte
indiqué. L'hôte par défaut est
localhost
.
--lock-tables, -l
Verrouille toutes les tables avant de commencer l'export. Les
tables sont verrouillées avec READ LOCAL
pour permettre des insertions concurrentes sur les tables
MyISAM
.
Notez que lorsque vous exportes des tables de bases
différentes, l'option --lock-tables
va
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-data
Cette option est similaire à --first-slave
,
mais produit aussi une commande CHANGE MASTER
TO
qui 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, -n
CREATE 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
--databases
ou
--all-databases
ont été activée.
--no-create-info, -t
N'écrit pas les informations de création de table (la
requête CREATE TABLE
).
--no-data, -d
N'écrit aucune ligne d'informations sur la table. C'est très pratique si vous voulez simplement exporter la structure de la table.
--opt
Identique à --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
’,
mysqldump
vous demandera le mot de passe en
ligne de commande.
--port=port_num, -P port_num
Le 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, -q
Ne garde pas en buffer les requêtes, mais écrit
immédiatement dans la sortie. Utilise
mysql_use_result()
pour cela.
--quote-names, -Q
Protège les noms des tables et colonnes avec le caractère
‘`
’.
--result-file=file, -r file
Ecrit 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-transaction
Cette option ajoute la commande SQL BEGIN
avant d'exporter les données vers le serveur. C'est
généralement pratique pour les tables
InnoDB
et le niveau d'isolation de
transaction READ_COMMITTED
, car ce mode va
exporter l'état de la base au moment de la commande
BEGIN
sans 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
MyISAM
ou HEAP
qui
seront exportées avec cette option, pourront changer d'état.
L'option --single-transaction
a été
ajoutée en version 4.0.2. Cette option est mutuellement
exclusive avec l'option --lock-tables
car
LOCK TABLES
va valider une transaction
interne précédente.
--socket=path, -S path
Le fichier de socket à utiliser pour les connexions locale
(à localhost
), qui est l'hôte par
défaut.
--skip-comments
Identique à que --comments
=
0
.
--tab=path, -T path
Crée un fichier table_name.sql
, qui
contient les commandes SQL CREATE
, et un
fichier table_name.txt
, qui contient les
données, pour chaque table. Le format du fichier
.txt
est celui qui est spécifié par les
options --fields-xxx
et
--lines--xxx
.
Note : cette option ne
fonctionne qui si mysqldump
est exécuté
sur la même machine que le démon mysqld
,
et que le nom d'utilisateur et le groupe de
mysqld
(normalement l'utilisateur
mysql
, et le groupe
mysql
) doivent avoir des permission pour
créer et écrire un fichier dans le dossier que vous
spécifiez.
--tables
Remplace l'option --databases
ou
-B
. Tous les arguments suivant les options
sont considérés comme des noms de tables.
--user=user_name, -u user_name
Le nom d'utilisateur MySQL lors de la connexion à un serveur distant.
--verbose, -v
Mode détaillé. Affiche plus d'informations sur les faits et gestes du programme.
--version, -V
Affiche 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, --xml
Exporte la base au format XML.
Vous pouvez aussi configurer les variables systèmes suivantes
avec la syntaxe --var_name=value
:
max_allowed_packet
La 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-insert
ou
--opt
), mysqldump
va
créer des lignes ayant une taille maximale de
max_allowed_packet
octets. Si vous
augmentez la valeur de cette variable, assurez vous que
max_allowed_packet
est assez grande dans le
serveur.
net_buffer_length
La 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 :
-?, --help
Affiche un écran d'aide et quitte.
--allowold
Ne pas annuler si la sauvegarde existe déjà (renomme la simplement en _old)
--checkpoint=db_name.tbl_name
Insère un point de contrôle dans la table spécifiée (base.table)
--debug
Active le débogage.
--dryrun, -n
Rapporte les actions réalisées sans les faire.
--flushlog
Vide les logs sur le disque une fois que toutes les tables sont verrouillées.
--keepold
Ne pas effacer une sauvegarde précédente (celle qui a été renommée) lorsque c'est terminé.
--method=#
Méthode de copie (cp
ou
scp
).
--noindices
Ne 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_num
Port utilisé pour la connexion au serveur.
--quiet, -q
Mode silencieux. N'affiche que les erreurs.
--regexp=expr
Copie toutes les bases dont le nom vérifie un masque d'expression régulière.
--socket=path, -S path
Socket utilisée pour la connexion au serveur.
--suffix=str
Suffixe des noms des bases copiées.
--tmpdir=path
Dossier temporaire (au lieu de /tmp
).
--user=user_name, -u user_name
Nom 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_list
Cette 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 INFILE
correcte, qui
sera alors passée à MySQL.
--compress, -C
Compresse 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_options
est souvent :
'd:t:o,file_name'
.
--delete, -D
Vide 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 de LOAD DATA INFILE
».
--force, -f
Ignore les erreurs. Par exemple, si une table n'existe pas
pour un fichier texte, mysqlimport
va
continuer de traiter les autres fichiers. Sans
--force
, mysqlimport
se
termine dès qu'une erreur survient.
--host=host_name, -h host_name
Importe les données sur le serveur MySQL, avec l'hôte
spécifié. La valeur par défaut est
localhost
.
--ignore, -i
Voir la description de --replace
.
--ignore-lines=n
Ignore les n
premières lignes du fichier
de données.
--local, -L
Lit 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, -l
Verrouille 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, mysqlimport
va vous demander le
mot de passe en ligne.
--port=port_num, -P port_num
Le 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, -r
Les options --replace
et
--ignore
contrô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, -s
Mode silencieux. N'affiche que les erreurs qui surviennent.
--socket=path, -S path
Le fichier de socket à utiliser lors de la connexion à
localhost
(qui est l'hôte par défaut).
--user=user_name, -u user_name
Le 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, -v
Mode détaillé. Affiche bien plus d'informations sur les actions du programme.
--verbose, -v
Affiche 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=path
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 ».
--compress, -C
Utilise la compression avec le protocole client / serveur.
--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'
.
--default-character-set=charset
Configure 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_name
Connexion avec l'hôte indiqué.
--keys, -k
Affiche 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_num
Le 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 path
Le fichier de socket à utiliser pour la connexion.
--status, -i
Affiche des informations supplémentaires sur chaque table.
--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.
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 :
-?, -I
Affiche le message d'aide et quitte.
-# debug_options
Écrit un log de débogage. La chaîne
debug_options
vaut souvent
'd:t:o,file_name'
.
-s
Mode silencieux. Affiche moins d'informations sur les activités du programme.
-v
Mode prolifique. Affiche plus d'informations sur les activités du programme.
-V
Affiche la version, et quitte.