4 Administration du serveur
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. Passer de la version 3.20 à la version 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 peu, 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 ques 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 −−no−auto−rehash