Options de ligne de commande de mysqld
<<<
Fichier d'options my.cnf Utiliser les variables d'environnement pour spécifier des options
>>>

4.3 Spécifier des options aux programmes
4 Utiliser les programmes MySQL
 Manuel de Référence MySQL 4.1 : Version Française

Options de ligne de commande de mysqld
->Fichier d'options my.cnf
Utiliser les variables d'environnement pour spécifier des options
Utiliser les options pour configurer des variables de programme

4.3.2 Fichier d'options my.cnf

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 Utiliser les options pour configurer les 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.

<< Fichier d'options my.cnf >>
Options de ligne de commande de mysqld Spécifier des options aux programmes Utiliser les variables d'environnement pour spécifier des options