• Aucun résultat trouvé

Options de ligne de commande de mysqld

Chapitre 4. Utiliser les programmes MySQL

4.3. Spécifier des options aux programmes

4.3.1. Options de ligne de commande de mysqld

Les options des programmes spécifiées en ligne de commande suivent ces règles :

• Les options sont données après la commande.

• Une option commence avec un ou deux tirets, suivant que c'est un nom long ou court. De nombreuses options ont les deux formats.

Par exemple,-?et--helpsont les formes courtes et longues de l'option qui demande à un programme d'afficher le message d'aide.

• Les noms des options sont sensibles à la casse.-vet-Vsont valides tous les deux, mais ont des significations différentes. Elles correspondent aux formes courtes des options--verboseet--version.

• Certains options prennent une valeur en argument, après le nom de l'option. Par exemple,-h localhostet

--host=localhostindique au client MySQL le nom d'hôte du serveur à utiliser. La valeur de l'option est le nom de l'hôte à utiliser.

• Pour une option longue qui prend une valeur, séparez l'option de la valeur avec le signe égal (‘=’). Pour une option longue qui prend une valeur, séparez l'option de la valeur avec le signe espace. (-hlocalhostet-h localhostsont équivalents) Une exception à cette règle est l'option qui permet de spécifier le mot de passe MySQL. Cette option peut être donnée en format long comme --password=pass_valou bien--password. Dans le dernier cas (sans mot de passe indiqué), le programme vous demandera interactivement un mot de passe. Le mot de passe peut aussi être configuré avec la forme courte-ppass_val, ou encore-p.

Cependant, en forme courte, si le mot de passe est fourni, il doit suivre immédiatement la lettre, sans espace. La raison à cela est que le programme ne saura pas si l'argument suivant est le paramètre de l'option ou un autre argument. Par conséquent, les deux commandes suivantes ont deux significations très différente :

shell> mysql -ptest shell> mysql -p test

La première commande demande àmysqld'utiliser la valeurtestcomme mot de passe, mais ne spécifie pas de base de données par défaut. La seconde commande demande àmysqlde demander le mot de passe à l'écran, et d'utiliser la basetestcomme base par défaut.

MySQL 4.0 a introduit une souplesse supplémentaire dans la manière de saisir des options. Ces modifications ont été ajoutée en MySQL 4.0.2. Certaines se rapportent à la fa¸on de spécifier qu'une option est ``activée'' ou ``désactivée'', et d'autres se rapportent aux options qui sont disponibles dans une version, mais pas dans l'autre. Ces fonctionnalités sont décrites ultérieurement dans cette section.

Un autre changement se rapport à la méthode de spécifications des variables de programme. La sectionSection 4.3.4, « Utiliser les options pour configurer des variables de programme »présente en détails ce sujet.

Certaines options qui contrôlent le comportement du serveur peuvent être activées ou désactivées. Par exemple, le clientmysql supporte l'option--column-namesqui détermine si il faut afficher ou pas les noms des colonnes. Par défaut, cette option est activée.

Cependant, vous pouvez la désactiver dans certaines situations, comme lorsque vous voulez envoyer le résultat demysqldans un autre programme qui s'attend à ne recevoir que des données, et pas les entêtes.

Pour désactiver les nom des colonnes, vous pouvez spécifier l'option de trois manières différentes :

--disable-column-names --skip-column-names --column-names=0

Les préfixes--disableet--skipet le suffixe=0ont tous le même effet : ils désactivent l'option.

La forme ``active'' de l'option peut être spécifiée de ces trois manières :

--column-names --enable-column-names --column-names=1

Une autre modification au traitement des options, introduit en MySQL 4.0 est que vous pouvez utiliser le préfixe--loosepour les options de ligne de commande. Si une option est préfixée par--loose, le programme ne va pas se terminer avec une erreur, s'il ne reconnaît pas l'option, mais il va juste émettre une alerte :

shell> mysql --loose-no-such-option

mysql: WARNING: unknown option '--no-such-option'

Le préfixe--loosepeut être utilise lorsque vous exécutez des programmes depuis plusieurs installations de MySQL sur la même machine : tout au moins, des serveurs aussi récents que la version 4.0.2. Ce préfixe est particulièrement utilise lorsque vous listes les options dans un fichier d'options. Une option peut ne pas être reconnue par une version du programme, avec le préfixe--loose, ou le préfixeloosedans un fichier d'options. Les versions du programme qui ne reconnaissent pas l'option émettront une alerte, mais ignoreront l'option. Cette stratégie requiert que les versions sont toutes en 4.0.2 ou plus récent, car les anciennes versions ne connaissent pas--loose.

4.3.2. Fichier d'options my.cnf

Utiliser les programmes MySQL

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,mysqlimportet mysqlshow.

MySQL lit les fichiers d'options suivants sous Windows :

Fichier Contenu

WINDIR\my.ini Options globales

C:\my.cnf Options globales

WINDIRreprésente votre dossier Windows. Il est généralementC:\WindowsouC:\WinNT. Vous pouvez déterminer sa localisation exacte à partir de la variable d'environnementWINDIRavec 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

DATADIRest le dossier de données de MySQL (typiquement/usr/local/mysql/datapour les installation binaires ou/ usr/local/varpour 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--datadirlorsquemysqlddémarre ! (--datadirn'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,--quicket--host=localhosten ligne de commande deviennentquickethost=localhost dans un fichier d'options. Pour spécifier une option de la forme--loose-opt_namedans un fichier d'options, écrivez la sous la formeloose-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]

groupest le nom du programme ou du groupe pour lequel vous souhaitez configurer des options. Après une ligne de groupe, toutes lesoptionetset-variables'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_namesur la ligne de commande.

• opt_name=value

Ceci est équivalent à--opt_name=valuesur 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 programmevar_namesa valeur. Ceci est équivalent à--set-variable variable=valuesur la ligne de commande. Cette syntaxe doit être utilisée pour spécifier la valeur d'une variablemysqld. Les espaces sont autorisés autour du premier caractère ‘=’ mais pas autour du second. Notez que--set-variableest obsolète depuis MySQL 4.0, utilisez simplement--variable=valuecomme tel. VoyezSection 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 serveurmysqld. 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--newsoit 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 syntaxevar_name=valuepour les variableskey_buffer_sizeet

max_allowed_packet. Avant MySQL 4.0.2, vous auriez besoin d'utiliser la syntaxeset-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

Utiliser les programmes MySQL

Ce fichier d'options utilise la syntaxeset-variablepour spécifier la variableconnect_timeout. Depuis MySQL 4.0.2, vous pouvez aussi configurer la variable avecconnect_timeout=2.

Si vous avez une distribution source, vous trouverez des exemples de configuration dans les fichiers nommésmy-xxxx.cnfdans le dossiersupport-files. Si vous avez une distribution binaire, regardez dans le dossierDIR/support-files, oùDIRest 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 fichiersmy-xxxx.cnfdans votre dossier utilisateur (renommez le fichier en.my.cnf) pour le tester.

Note : sous Windows, le fichier d'options.cnfpeut 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_nameest 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_nameest 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-defaultsqui peut être utilisée juste après--defaults-fileet--defaults-extra-file.

Dans les scripts Shell, vous pouvez utiliser le programmemy_print_defaultspour analyser les fichiers d'options. L'exemple suivant montre le résultat quemy_print_defaultspeut 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.