Les programmes MySQL peuvent lire des options de démarrage depuis un fichier d'options (aussi appelé fichier de configuration). Les fichiers d'options fournissent un moyen pratique de spécifier les options les plus courantes pour éviter de les saisir à chaque lancement du programme. Cette fonctionnalité est fournie depuis MySQL version 3.22.
Les programmes suivantes supportent les fichiers d'options :
myisamchk
, myisampack
,
mysql
, mysql.server
,
mysqladmin
, mysqlbinlog
,
mysqlcc
, mysqlcheck
,
mysqld_safe
, mysqldump
,
mysqld
, mysqlhotcopy
,
mysqlimport
et mysqlshow
.
MySQL lit les fichiers d'options suivants sous Windows :
Fichier | Contenu |
WINDIR\my.ini |
Options globales |
C:\my.cnf |
Options globales |
WINDIR
représente votre dossier Windows. Il
est généralement C:\Windows
ou
C:\WinNT
. Vous pouvez déterminer sa
localisation exacte à partir de la variable d'environnement
WINDIR
avec cette commande :
C:\> echo %WINDIR%
MySQL lit les options par défaut dans les fichiers suivants sous Unix :
Fichier | Objet |
/etc/my.cnf |
Options globales |
DATADIR/my.cnf |
Options spécifiques au serveur |
defaults-extra-file |
Le fichier spécifié par --defaults-extra-file=#
|
~/.my.cnf |
Options spécifiques à l'utilisateur |
DATADIR
est le dossier de données de MySQL
(typiquement /usr/local/mysql/data
pour les
installation binaires ou /usr/local/var
pour une installation source). Notez que c'est ce dossier qui a
été spécifié au moment de la configuration et non pas le
dossier de l'option --datadir
lorsque
mysqld
démarre !
(--datadir
n'a aucun effet sur le serveur, car
le serveur recherche les données avant de traiter les options
de ligne de commande).
MySQL essaie de lire les fichiers d'options dans l'ordre dans lequel ils sont présentés ci-dessus. Si un fichier d'options n'existe pas, vous pouvez le créer avec un éditeur de texte. Si des options sont spécifiées plusieurs fois, la dernière occurrence utilisée prend la préséance sur les options spécifiées avant.
Toutes les options longues qui peuvent être donnée en ligne de
commande, peuvent être mises dans un fichier d'options. Pour
avoir la liste des options d'un programme, utilisez la commande
--help
.
La syntaxe de spécification dans un fichier d'option est
similaire celle de ligne de commande, hormis le fait que vous
omettez les deux tirets initiaux. Par exemple,
--quick
et --host=localhost
en
ligne de commande deviennent quick
et
host=localhost
dans un fichier d'options.
Pour spécifier une option de la forme
--loose-opt_name
dans un fichier d'options,
écrivez la sous la forme loose-opt_name
.
Les lignes vides du fichier d'options sont ignorées. Un fichier d'options contient des lignes ayant la forme suivante :
#comment
, ;comment
Les lignes de commentaires commencent avec
‘#
’ ou
‘;
’. Depuis MySQL 4.0.14, un
commentaire ‘#
’ peut être
ouvert au milieu de la ligne.
[group]
group
est le nom du programme ou du
groupe pour lequel vous souhaitez configurer des options.
Après une ligne de groupe, toutes les
option
et set-variable
s'appliqueront au groupe nommé, jusqu'à la fin du fichier
d'option ou du démarrage d'un autre groupe.
opt_name
Ceci est équivalent à --opt_name
sur la
ligne de commande.
opt_name=value
Ceci est équivalent à --opt_name=value
sur la ligne de commande. Dans un fichier d'options, vous
pouvez mettre des espaces autour du caractère
‘=
’, ce qui n'est pas vrai en
ligne de commande. Depuis MySQL 4.0.16, vous pouvez mettre
les valeurs des options entre guillemets simples ou doubles.
C'est utile lorsqu'une valeur contient un début de
commentaire ‘#
’ ou des
espaces.
set-variable = variable=value
Donne à la variable programme var_name
sa valeur. Ceci est équivalent à --set-variable
variable=value
sur la ligne de commande. Cette
syntaxe doit être utilisée pour spécifier la valeur d'une
variable mysqld
. Les espaces sont
autorisés autour du premier caractère
‘=
’ mais pas autour du
second. Notez que --set-variable
est
obsolète depuis MySQL 4.0, utilisez simplement
--variable=value
comme tel. Voyez
Section 4.3.4, « Utiliser les options pour configurer des variables de programme » pour plus d'informations
sur la spécification des variables programme.
Les espaces initiaux et terminaux sont automatiquement effacés
autour des noms d'options et de leur valeur. Vous pouvez
utilisez les séquences spéciales
‘\b
’,
‘\t
’,
‘\n
’,
‘\r
’,
‘\\
’ et
‘\s
’ dans les valeurs des options
pour représenter des effacement, tabulations, nouvelles lignes,
retour chariot et espaces.
Sous Windows, si une valeur d'option représente un chemin de
dossier, vous devez spécifier la valeur en utilisant
‘/
’ plutôt que
‘\
’ comme séparateur de
dossiers. Si vous utilisez use
‘\
’, vous devez le doubler
‘\\
’, car
‘\
’ est le caractère de
protection de MySQL.
Si un groupe d'options est le même que le nom d'un programme, les options de ce groupe seront réservées à ce programme.
Le groupe d'options [client]
est lu par tous
les programmes clients et pas par le serveur
mysqld
. Cela vous permet de spécifier les
options qui s'appliqueront à tous les clients. Par exemple,
[client]
est le groupe parfait pour
spécifier le mot de passe que vous utilisez pour vous connecter
au serveur. Mais assurez vous que le fichier est lisible et
modifiable uniquement par vous-même pour que personne ne puisse
découvrir votre mot de passe. Assurez vous de n'utiliser que
des options qui seront reconnues par tous
les programmes client. Les programmes qui ne comprennent pas une
option vont afficher un message d'erreur lorsque vous les
exécuterez.
Depuis MySQL 4.0.14, si vous voulez créer des groupes d'options
qui ne doivent être lus que par une versions spécifique du
serveur mysqld
, vous pouvez le faire en
utilisant des groupes avec des noms du type
[mysqld-4.0]
,
[mysqld-4.1]
, etc. Le groupe suivante indique
que l'option --new
soit utilisée avec les
serveur de version 4.0.x :
[mysqld-4.0] new
Voici un fichier d'options globales typique :
[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=8M [mysqldump] quick
Le fichier d'options ci-dessus utilise la syntaxe
var_name=value
pour les variables
key_buffer_size
et
max_allowed_packet
. Avant MySQL 4.0.2, vous
auriez besoin d'utiliser la syntaxe
set-variable
à la place (comme présenté
précédemment).
Voici un fichier d'options utilisateur classique :
[client] # Le mot de passe suivant sera envoyé par tous les clients standards MySQL password="my_password" [mysql] no-auto-rehash set-variable = connect_timeout=2 [mysqlhotcopy] interactive-timeout
Ce fichier d'options utilise la syntaxe
set-variable
pour spécifier la variable
connect_timeout
. Depuis MySQL 4.0.2, vous
pouvez aussi configurer la variable avec
connect_timeout=2
.
Si vous avez une distribution source, vous trouverez des
exemples de configuration dans les fichiers nommés
my-xxxx.cnf
dans le dossier
support-files
. Si vous avez une
distribution binaire, regardez dans le dossier
DIR/support-files
, où
DIR
est le chemin de l'installation MySQL
(typiquement /usr/local/mysql
).
Actuellement, il y a des exemples de configuration pour des
systèmes petits, moyens, grands et très grands. Vous pouvez
copier l'un des fichiers my-xxxx.cnf
dans
votre dossier utilisateur (renommez le fichier en
.my.cnf
) pour le tester.
Note : sous Windows, le
fichier d'options .cnf
peut ne pas afficher
son extension.
Tous les programmes MySQL qui supportent les fichiers d'options gèrent les options suivantes de ligne de commande :
--no-defaults
N'utilise aucun fichier d'options.
--print-defaults
Affiche le nom du programme et toutes les options qui seront lues dans les fichiers d'options.
--defaults-file=path_name
Utilise uniquement le fichier d'options indiqué.
path_name
est le chemin complet pour y
accéder.
--defaults-extra-file=path_name
Lit ce fichier d'options après le fichier d'options
globales, et avant le fichier d'options utilisateurs.
path_name
est le chemin complet pour y
accéder.
Pour fonctionner correctement, toutes ces options doivent
immédiatement suivre le nom de la commande en ligne, hormis
--print-defaults
qui peut être utilisée juste
après --defaults-file
et
--defaults-extra-file
.
Dans les scripts Shell, vous pouvez utiliser le programme
my_print_defaults
pour analyser les fichiers
d'options. L'exemple suivant montre le résultat que
my_print_defaults
peut produire lorsqu'on lui
demande d'afficher les options des groupes
[client]
et [mysql]
:
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
Note pour les développeurs : la gestion des fichiers est implémentée en C dans la bibliothèque cliente simplement en traitant les options qui sont trouvées, (c'est à dire, les options du groupe appropriée), et avant les options de ligne de commande. Cela fonctionne correctement avec les programmes qui utilisent la dernière option des options spécifiées plusieurs fois. Mais si vous avez un programme C ou C++ qui gère les options de cette manière mais ne lit pas les fichiers d'options, vous aurez peut être à ajouter seulement deux lignes pour lui donner cette fonctionnalité. Voyez le code source des clients MySQL standard pour voir comment faire.
De nombreux autres langages s'interfacent avec MySQL grâce à la bibliothèque C, et certains fournissent un moyen d'accéder aux fichiers d'options. Cela inclut les langages Perl et Python. Voyez la documentation de votre interface favorite pour plus de détails.
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.