4.1 Configuration de MySQL
4.1.1 Options de ligne de commande de mysqld
Dans la plupart des cas, vous devrez modifier les options de mysqld dans le fichier d'options. Fichier d'options my.cnf
.
mysqld
et mysqld.server
lisent les options des groupes mysqld
et server
. mysqld_safe
lit les options des groupes
mysqld
, server
, mysqld_safe
et safe_mysqld
. Un serveur MySQL intégré lit généralement les options dans les groupes server
, embedded
et xxxxx_SERVER
, où xxxxx
est le nom de l'application.
mysqld
accepte les options de ligne de commande suivantes :
−−ansi
Utilise la syntaxe ANSI SQL au lieu de la syntaxe MySQL. Exécuter MySQL en mode ANSI .
−b, −−basedir=path
Chemin jusqu'au dossier d'installation. Tous les chemins sont généralement relatifs à celui−ci.
−−big−tables
Autorise la sauvegarde de grands résultats dans des fichiers temporaires. Cela résout le problème des erreurs 'table full', mais ralentit les requêtes alors que des tables en mémoire suffirait. Depuis la version version 3.23.2, MySQL est capable de résoudre automatiquement ce problème en utilisant de la mémoire pour toutes les tables temporaires de petite taille, et en passant sur le disque au besoin.
−−bind−address=IP
L'adresse IP à utiliser.
−−character−sets−dir=path
Dossier contenant les jeux de caractères. Le jeu de caractères utilisé pour les données et le stockage .
−−chroot=path
Met le démon mysqld
en environnement chroot au démarrage. Recommandé pour la sécurité. Cela limite les commandes LOAD DATA INFILE
et SELECT ... INTO OUTFILE
.
−−core−file
Ecrire le fichier core lorsque mysqld
s'arrête inopinéement. Pour certains fichiers, vous devez aussi spécifier −−core−file−size
à safe_mysqld
. safe_mysqld
, le script père de mysqld
. Notez que sur certains systèmes, comme Solaris, vous n'aurez pas de fichier de core si vous avez aussi utilisé l'option −−user
.
−h, −−datadir=path
Chemin jusqu'au dossier des bases.
−−debug[...]=
Si MySQL est configuré avec −−with−debug
, vous pouvez utiliser cette option pour obtenir un fichier de trace de ce que mysqld
fait. Créer des fichiers de traçage .
−−default−character−set=charset
Spécifie le jeu de caractères par défaut. Le jeu de caractères utilisé pour les données et le stockage .
−−default−table−type=type
Spécifie le type de table par défaut. Types de tables MySQL .
−−delay−key−write[= OFF | ON | ALL]
Comment l'option des tables MyISAM DELAYED KEYS
doit être utilisé. Choix des paramètres du serveur .
−−delay−key−write−for−all−tables; En MySQL 4.0.3 vous devez utiliser −−delay−key−write=ALL à la place.
Ne vide pas les buffers de clés entre deux écritures pour les tables MyISAM
. Choix des paramètres du serveur .
−−des−key−file=filename
Lit les clés par défaut utilisées par DES_ENCRYPT()
et DES_DECRYPT()
dans ce fichier.
−−enable−external−locking (was −−enable−locking)
Active le verrouillage système. Notez que si vous utilisez cette option sur un système pour qui lockd
ne fonctionne pas (comme Linux), vous allez bloquer rapidement mysqld avec les verrous.
−−enable−named−pipe
Active le support des tunnels nommés (seulement sur NT/Win2000/XP).
−T, −−exit−info
Cette option est la combinaison d'options que vous pouvez utiliser pour le débogage du serveur mysqld; Si vous ne savez pas ce que ca fait exactement, ne les utilisez pas !
−−flush
Ecrit toutes les données sur le disque après chaque requête SQL. Normalement, MySQL fait des écritures sur le disque après chaque requête, et laisse le système d'exploitation assurer la synchronisation avec le disque. Que faire si MySQL crashe constamment .
−?, −−help
Affiche l'aide courte et termine le programme.
−−init−file=file
Lit les commandes SQL dans ce fichier au démarrage.
−L, −−language=...
Spécifie la langue utilisée pour les messages d'erreur du client. Le chemin complet doit être utilisé. Messages d'erreurs non−anglophones .
−l, −−log[=file]
Enregistre les connexions et les requêtes dans ce fichier. Le log général de requêtes .
−−log−isam[=file]
Enregistre toutes les modifications des tables ISAM/MyISAM dans ce fichier (uniquement nécessaire pour déboguer ISAM/MyISAM).
−−log−slow−queries[=file]
Enregistre toutes les requêtes qui ont pris plus de long_query_time
secondes a s'exécute, dans ce fichier. Le log des requêtes lentes .
−−log−update[=file]
Enregistre les modifications dans le fichier file.#
où #
est un nombre unique si il n'est pas précisé. Le log des mises à jour .
−−log−long−format
Enregistre des informations supplémentaires dans le fichier d'historique. Si vous utilisez l'option −−log−slow−queries
, alors les requêtes que vous qui n'utilisent pas les index sont enregistrées dans le log de requêtes longues.
−−low−priority−updates
Les opérations de modifications de table ( INSERT
/ DELETE
/ UPDATE
) auront une priorité inférieure aux sélections. Cela peut être aussi fait via l'attribut {INSERT | REPLACE | UPDATE | DELETE} LOW_PRIORITY ...
pour baisser la priorité d'une requête, ou avec SET LOW_PRIORITY_UPDATES=1
pour changer la priorité dans plus d'un thread. Problèmes avec le verrouillage de tables .
−−memlock
Verrouille le processus mysqld
en mémoire. Cela fonctionne si votre système support la
fonction mlockall()
(comme Solaris). Ceci peut être utile si vous avez des problèmes avec le système d'exploitation qui force mysqld
a utiliser le swap sur le disque.
−−myisam−recover [=option[,option...]]]
Cette option est la combinaison de DEFAULT
, BACKUP
, FORCE
et QUICK
. Vous pouvez aussi lui donner la valeur explicite de ""
si vous voulez désactiver cette option. Si cette option est utilisée, mysqld
va vérifier si la table est marquée comme corrompue à l'ouverture de chaque table (cette dernière option ne fonctionne que si vous utilisez l'option
−−skip−external−locking
). Si c'est le cas, mysqld
va essayer de vérifier la table. Si la table était corrompue, mysqld
essaie alors de la réparer.
L'option suivante va affecter la manière avec la quelle la réparation s'effectue.
Option Description
DEFAULT Identique à ne pas donner d'option à −−myisam−recover .
BACKUP Si la table a été modifiée durant la réparation, sauver une copie du fichier table_name.MYD , sous le nom de table_name−datetime.BAK .
FORCE Exécute une réparation même si nous allons perdre une ou plusieurs lignes dans le fichier .MYD. QUICK Ne vérifie pas les lignes dans la table si il n'y a pas eu d'effacement.
Avant que la table ne soit automatiquement réparée, MySQL va ajouter une note dans le fichier de log d'erreurs. Si vous voulez être capable de restaurer la plupart des erreurs sans intervention de l'utilisateur, il vaut utiliser les options BACKUP,FORCE
. Cela va forcer la réparation de la table, même si quelques lignes sont effacées, et conserve le vieux fichier de données comme sauvegarde, pour examen ultérieur.
−−pid−file=path
Le chemin jusqu'au fichier de pid utilisé par safe_mysqld
.
−P, −−port=...
Numéro de port utilisé pour attendre les connexion TCP/IP.
−o, −−old−protocol
Utilise le protocole 3.20, pour la compatibilité avec de très vieux clients. Upgrading from Version 3.20 to 3.21 .
−−one−thread
Utilise uniquement un thread (pour débogage sous Linux). Déboguer un serveur MySQL .
−O, −−set−variable var=option
Donne une valeur à une variable. −−help
liste ces variables. Vous pouvez trouver une description complète des variables dans la section sur la commande SHOW VARIABLES
de ce manuel. SHOW VARIABLES
. La section de paramétrage inclut des informations sur comment exploiter ces variables. Notez que −−set−variable
est obsolète depuis MySQL 4.0, utilisez simplement la syntaxe −−var=option
. Choix des paramètres du serveur . En MySQL 4.0.2, il est possible de changer une variable directement avec la syntaxe
−−variable−name=option
et set−variable
n'est plus nécessaire dans le fichier de configuration. Si vous voulez restreindre la valeur maximale que peut prendre une option via la commande SET
, vous pouvez définir une limite en utilisant l'option de ligne de commande −−maximum−variable−name
. Syntaxe de SET
.
Notez que lorsque vous donnez une valeur à une variable, MySQL peut corriger automatiquement votre valeur pour rester dans un intervalle donné, et ajuster un peu la valeur pour qu'elle soit optimale.
−−safe−mode
Ignore certains étapes d'optimisation.
−−safe−show−database
Avec cette option, la commande SHOW DATABASES
retourne uniquemnt les bases pour lesquelles l'utilisateur a des droits. Depuis la version 4.0.2, cette option est
abandonnée, et ne fait plus rien (l'option est activée par défaut) car nous avons désormais le droit de SHOW DATABASES
. Syntaxe de GRANT
et REVOKE
.
−−safe−user−create
Si cette option est activée, un utilisateur ne peut pas créer de nouveaux utilisateurs avec la commande GRANT si l'utilisateur n'a pas les droits de INSERT
dans la table
mysql.user
ou dans aucune colonne de cette table.
−−skip−bdb
Désactive l'utilisation des tables BDB. Cela va économiser de la mémoire et accélérer le serveur un peu.
−−skip−concurrent−insert
Désactive la possibilité de sélectionner et insérer en même temps dans les tables
MyISAM
(cela n'est utile que si vous pensez que vous avez trouvé un bug dans cette fonctionnalité).
−−skip−delay−key−write; En MySQL 4.0.3, il est recommandé d'utiliser l'option
−−delay−key−write=OFF à la place. Ignorez l'option DELAY_KEY_WRITE
de toutes les tables. Choix des paramètres du serveur .
−−skip−grant−tables
Cette option force le serveur à ne pas utiliser le système de privilège du tout. Cela donne à tous l' accès complet à toutes les bases de données ! Vous pouvez demander à un serveur en exécution d'utiliser à nouveau les tables de droits en exécutant la commande mysqladmin flush−privileges
ou mysqladmin reload
).
−−skip−host−cache
Ne pas utiliser le cache de nom de domaine pour une résolution des IP plus rapide, mais interroger le serveur DNS à chaque connexion. Comment MySQL utilise les DNS .
−−skip−innodb
Désactive l'utilisation des tables InnoDB
. Cela va économiser de la mémoire et accélérer le serveur un peu.
−−skip−external−locking (ancien −−skip−locking)
Ne pas utiliser le verrouillage du système. Pour utiliser les utilitaires isamchk
ou myisamchk
vous devez alors éteindre le système. Degré de stabilité de MySQL . Notez qu'en MySQL version 3.23 vous pouvez utiliser la commande REPAIR
et CHECK
pour réparer ou vérifier des tables MyISAM
tables.
−−skip−name−resolve
Les noms d'hôtes ne sont pas résolus. Toutes les colonnes Host
dans vos tables de droits doivent être des IP numériques ou le mot localhost
. Comment MySQL utilise les DNS .
−−skip−networking
Ne pas attendre les connexions TCP/IP du tout. Toutes les interactions du serveur
mysqld
seront faites avec les sockets Unix. Cette option est particulièrement recommandée pour les systèmes qui utilisent des requêtes locales. Comment MySQL utilise les DNS .
−−skip−new
Ne pas utiliser les nouvelles routines qui sont possiblement erronées.
−−skip−symlink
Ne pas effacer ou renommer les fichiers qui ont un lien symbolique dans le dossier de données.
−−skip−safemalloc
Si MySQL est configuré avec −−with−debug=full
, tous les programmes vérifieront la
mémoire pour rechercher les écrasment de zone lors des allocations et libérations de mémoire. Comme ce test est lent, vous pouvez l'éviter, si vous n'avez pas besoin de tester la mémoire, en utilisant cette option.
−−skip−show−database
Ne pas autoriser la commande SHOW DATABASES
, a moins que l'utilisateur n'ait les droits de
SHOW DATABASES
. Depuis la version 4.0.2, vous n'avez plus besoin de cette option, car les droits pour ce faire sont distribués avec le droit de SHOW DATABASES
.
−−skip−stack−trace
Ne pas écrire les piles de traces. Cette option est pratique lorsque vous utilisez mysqld
avec un débogueur. Sur certains systèmes, vous devez aussi utiliser cette option pour obtenir un fichier de core. Déboguer un serveur MySQL .
−−skip−thread−priority
Désactive la priorisation des threads pour améliorer la vitesse de réponse.
−−socket=path
Le fichier de socket à utiliser pour les connexions locales, au lieu du fichier par défaut /tmp/mysql.sock
.
−−sql−mode=option[,option[,option...]]
Cette option peut être la combinaison de : REAL_AS_FLOAT
, PIPES_AS_CONCAT , ANSI_QUOTES , IGNORE_SPACE , SERIALIZE et ONLY_FULL_GROUP_BY
. Ellep peut aussi être vide ( ""
) si vous voulez remettre cette option à 0.En spécifiant toutes les options ci−dessus, vous obtiendrez le même effet qu'avec l'option −−ansi. Avec cette option, vous pouvez activer les modes SQL dont vous avez besoin. Exécuter MySQL en mode ANSI .
−−temp−pool
En utilisant cette option, vous allez réduire le jeu de noms qui sont utilisés lors de la création de fichier temporaires, plutôt qu'un nom unique à chaque fois. Ceci est un palliatif au noyau Linux qui crèe plusieurs fichiers nouveaux avec des noms
différents. Avec l'ancien comportement, Linux semble 'perdre de la mémoire', car ils sont alloués au cache d'entrées du dossier au lieu de celui du disque.
−−transaction−isolation= { READ−UNCOMMITTED | READ−COMMITTED | REPEATABLE−READ | SERIALIZABLE }
Configure le niveau d'isolation des transactions. Syntaxe de SET TRANSACTION
.
−t, −−tmpdir=path
Chemin vers les fichiers temporaires. Il peut s'avérer pratique si votre dossier par défaut /tmp
réside dans une partition qui est trop petite pour absorber les tables temporaires.
−u, −−user= [user_name | userid]
Exécute le démon mysqld
avec l'utilisateur user_name
ou userid
(numérique). Cette option est
obligatoire lorsque vous démarrez mysqld
en tant que root.
−V, −−version
Affiche les informations de version.
−W, −−log−warnings (Was −−warnings)
Enregistre les alertes comme Aborted connection...
dans le fichier .err
. Erreurs de communication / connexion annulée .
Il est possible de modifier la plupart des valeurs durant l'exécution, avec la commande SET
command. Syntaxe de SET
.
4.1.2 Fichier d'options my.cnf
MySQL peut, depuis la version 3.22, lire des options de démarrage par défaut pour le serveur en ligne de commande, et, par le client, dans un fichier.
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 lit les fichiers d'options suivants sous Windows :
Fichier Contenu
windows−system−directory\my.ini Options globales
C:\my.cnf Options globales
Notez que sous Windows, vous devez spécifier les chemins avec /
plutôt que \
. Si vous utilisez \
, vous devez le spécifier deux fois, car \
est un caractère de protection pour MySQL.
MySQL essaie de lire les fichiers d'options dans l'ordre dans lequel ils sont présentés ci−dessus. Si des options sont spécifiées plusieurs fois, la dernière occurrence utilisée prend la préséeance sur les options spécifiées avant. Les options de ligne de commande ont la priorité sur les options spécifiées dans les fichiers. Certaines options peuvent être spécifiées en utilisant des variables d'environnement. Les options spécifiées en ligne de commande ou en fichier ont la priorité sur les options qui le sont via une variable d'environnement. Variables d'environnement MySQL .
Les programmes suivants utilisent les fichiers d'options : mysql
, mysqladmin , mysqld , mysqld_safe , mysql.server , mysqldump , mysqlimport , mysqlshow , mysqlcheck , myisamchk et myisampack .
Toute option longue qui doit être spécifiée en ligne de commande lorsque MySQL fonctionne, peut être aussi configurée dans le fichier d'options ( sans les doubles tirets). Exécutez le programme avec l'option −−help
pour avoir une liste des options disponibles. Un fichier d'options contient des lignes ayant la forme suivante :
#comment
Les lignes de commentaires commencent avec '#'
ou ';'
. Les lignes vides sont ignorées.
[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.
option
Ceci est équivalent à −−option
sur la ligne de commande.
option=value
Ceci est équivalent à −−option=value
sur la ligne de commande.
set−variable = variable=value
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
. Notez que −−set−variable
est obsolète depuis MySQL 4.0, utilisez simplement −−variable=value
comme tel. Le groupe client
vous permet de spécifier des options qui ne s'appliquent qu'aux clients MySQL et non pas au serveur mysqld
. C'est le groupe idéal pour spécifier des mots de passe de connexion au serveur (mais assurez−vous que vous êtes le seul à accéder à ce fichier !!).
Notez que pour les options et les valeurs, tous les caractères blancs de début et de fins seront automatiquement effacés. Vous pouvez utiliser les séquences d'échappement '\b'
, '\t' , '\n' , '\r' , '\\' et '\s'
dans votre chaîne à la place ( '\s'
== espace). Voici un exemple typique de fichier d'options globales :
[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock set−variable = key_buffer_size=16M set−variable = max_allowed_packet=1M [mysqldump] quick
Voici un exemple typique de fichier d'options utilisateur :
[client]
# Le mot de passe suivant va être utilisé avec le serveur password=mon_mot_de_passe [mysql] no−auto−rehash set−variable = connect_timeout=2 [mysqlhotcopy] interactive−timeout
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.
Tous les clients MySQL qui supportent les fichiers d'options, acceptent les options suivantes :
Option Description
−−no−defaults Ne lire aucun fichier d'options.
−−print−defaults Affiche le nom du programme et toutes les options qui s'y trouvent. −−defaults−file=full−path−to−default−file Utilise uniquement le fichier de configuraiton donné.
−−defaults−extra−file=full−path−to−default−file Lit ce fichier de configuration après le fichier de configuration global, mais avant le fichier de configuration utilisateur.
Notez que les options ci−dessus doivent être en ligne de commande pour être utilisées !
−−print−defaults
peut quand même être utilisé directement après la commande −−defaults−xxx−file
. Note pour les développeurs : la gestion des fichiers d'options est implémentée simplement en traitant toutes les options qui correspondent (c'est à dire, toutes les options appropriées du groupe), avant les arguments de ligne de commande. Cela fonctionne bien pour les programmes qui utilisent la dernière occurrence comme valeur d'option, si elle est spécifiée plusieurs fois. Si vous avez un vieux programme qui traite les options multiples de cette façon mais ne lit pas les fichiers d'options, vous n'avez besoin que de deux lignes pour qu'il accepte cette fonctionnalité. Récupérez le code source de n'importe quel client MySQL standard pour voir comment le faire.
En scripts shell, vous pouvez utiliser la commande my_print_defaults
pour analyser les fichiers de configuration :
shell> my_print_defaults client mysql −−port=3306
−−socket=/tmp/mysql.sock