mysqld_safe c'est la voie recommandée pour démarrer un serveur mysqld sur Unix et NetWare. mysqld_safe ajoute quelques fonctionnalités de sécurité telles que le redémarrage du serveur lorsqu'une erreur se produit et l'enregistrement d'information en temps d'exécution dans un fichier log d'erreurs. La description de l'enregistrement des erreurs et les comportements spécifiques de NetWare sont donnés plus tard dans cette section.

Note: dans MySQL 5.1.20 (seulement), le comportement par défaut d'enregistrement d'erreurs avec mysqld_safe est d'écrire les erreurs dans le syslog dans les systèmes qui supportent le programme logger. C'est un comportemente différent par rapport au comportement par défaut en ce qui concerne l'écriture d'un fichier log d'erreurs pour d'autres versions.

Dans la 5.1.20, se connecter à syslog pourrait ne pas fonctionner correctement dans certains cas ; si c'est le cas, servez-vous de --skip-syslog pour utiliser le fichier log par défaut ou bien --log-error=//file_name// pour spécifier un nom de fichier log explicitement.

mysqld_safe essaie de lancer un exécutable appelé mysqld. Pour remplacer le comportement par défaut et spécifier explicitement le nom du serveur que vous souhaitez exécuter, indiquez l'option --mysqld ou --mysqld-version pour mysqld_safe. Vous pouvez aussi utiliser --ledir pour indiquer le répertoire où mysqld_safe doit chercher le serveur.

Un grand nombre d'options pour mysqld_safe sont les mêmes pour mysqld.

Les options inconnues pour mysqld_safe sont passées à mysqld si elles sont spécifiées sur la ligne de commande, mais ignorées si elles sont spécifiées dans le groupe [mysqld_safe] d'un fichier d'options.

mysqld_safe lit toutes les options des sections [mysqld], [server], et [mysqld_safe] des fichiers d'options. Par exemple, si vous spécifiez une section [mysqld], mysqld_safe trouvera et utilisera l'option --log-error:

[mysqld]
log-error=error.log

Pour la compatibilité ascendante, mysqld_safe lit également les sections [safe_mysqld], cependant, vous devriez rennomer ces sections pour [mysqld_safe] dans des installations de MySQL 5.1.

Les options de mysqld_safe

mysqld_safe Supporte les options suivantes:

  • --help
    • Affiche un message d'aide et quitte.
  • --autoclose
    • (Seulement pour NetWare) Sur NetWare, mysqld_safe fournit une présence d'écran. Lorsque vous déchargez (arrêtez) le NLM mysqld_safe, l'écran ne se ferme pas par défaut. Au lieu de cela, elle affiche un prompt pour l'utilisateur :
*<NLM has terminated; Press any key to close the screen>*

Si par contre, vous voulez que NetWare ferme l'écran de manière automatique, utilisez l'option --autoclose pour mysqld_safe.

  • --basedir=path
    • C'est le chemin qui mène au répertoire d'installation de MySQL.
  • --core-file-size=size
    • La taille du fichier core que mysqld doit être capable de créer. La valeur de l'option est passée à ulimit -c.
  • --datadir=path
    • C'est le chemin qui mène au répertoire des données.
  • --defaults-extra-file=path
    • Le nom d'un fichier d'options qui va être lu en plus des fichiers habituels d'options. Celle-ci doit être la première option sur la ligne de commande, si elle est utilisée. Si le fichier n'existe pas ou qu'il est inaccessible, le serveur va quitter en affichant une erreur.
  • --defaults-file=file_name
    • C'est le nom d'un fichier d'options qui va être lu au lieu des fichiers d'options habituels. Celle-ci doit être la première option sur la ligne de commande, si elle est utilisée.
  • --ledir=path
    • Dans le cas où mysqld_safe ne trouverait pas le serveur, utilisez cette option pour indiquer le nom du chemin d'accès au répertoire où le serveur est situé.
  • --log-error=file_name
    • Cette option écrit le log d'erreur dans le fichier donné.
  • --mysqld=prog_name
    • C'est le nom du programme serveur (dans le répertoire ledir) que vous voulez démarrer. Cette option est nécessaire si vous utilisez la distribution binaire MySQL et que le répertoire de données se trouve à l'extérieur de la distribution binaire. Si mysqld_safe ne peut pas trouver le serveur, utilisez l'option --ledir pour indiquer le nom du chemin qui mène au répertoire où se trouve le serveur.
  • --mysqld-version=suffix
    • Cette option est semblable a l'option --mysqld, mais vous spécifiez uniquement le suffixe du nom de programme de serveur. Le nom de base est supposé d'être mysqld. Par exemple, si vous utilisez --mysqld-version=debug, mysqld_safe démarre le programme mysqld-debug dans le répertoire ledir. Si l'argument pour --mysqld-version est vide, mysqld_safe utilise mysqld dans le répertoire ledir.
  • --nice=priority
    • Utilisez le programme nice pour définir la programmation prioritaire du serveur à la valeur donnée.
  • --no-defaults
    • Ne lit aucun fichier d'option. Celle-ci doit être la première option sur la ligne de commande, si elle est utilisée.
  • --open-files-limit=count
    • C'est le nombre de fichiers que mysqld doit être capable d'ouvrir. La valeur de l'option est passée à ulimit -n. Notez que vous avez besoin de démarrer mysqld_safe en tant que root pour un fonctionnement correct!
  • --pid-file=file_name
    • C'est le nom du chemin d'accès au fichier du processus ID.
  • --port=port_num
    • C'est le numéro du port que le serveur doit utiliser lors de l'écoute de connexions TCP/IP. Le numéro du port doit être 1024 ou plus haut, à moins que le serveur soit démarré par l'utilisateur root du système.
  • --skip-kill-mysqld
    • N'essayez pas de tuer des processus parasites mysqld au démarrage. Cette option ne fonctionne que sur Linux.
  • --socket=path
    • C'est le fichier socket Unix que le serveur doit utiliser lors de l'écoute de connexions locales.
  • --syslog, --skip-syslog
    • --syslog provoque que les messages d'erreur soient envoyés à syslog dans les systèmes qui supportent le programme logger. --skip-syslog supprime l'utilisation de syslog; les messages sont écrits dans un fichier error log. Ces options ont été ajoutées dans MySQL 5.1.20.
  • --syslog-tag=tag
    • Pour connecter à syslog, les messages ṕrovenant de mysqld_safe et de mysqld sont écrits avec un tag de mysqld_safe et mysqld, respectivement. Pour spécifier un suffixe pour le tag, utilisez --syslog-tag=tag, qui modifie les tags. Ceux-ci deviennet des tags mysqld_safe- et des mysqld-tag. Cette option a été ajoutée dans MySQL 5.1.21.
  • --timezone=timezone
    • Définie la variable d'environnement de la zone de temps TZ à la valeur de l'option donnée. Veuillez consulter la documentation de votre système d'exploitation pour les formats de spécifications correspondants du fuseau horaire légal.
  • --user={user_name|user_id}
    • Exécute le serveur mysqld, l'utilisateur ayant le nom user_name ou le nom d'utilisateur numérique ID user_id. (“User” dans ce contexte fait référence à un compte de connexion au système, pas un utilisateur MySQL répertorié dans les tables de permission.)

Si vous exécutez mysqld_safe avec le --defaults-file ou l'option --defaults-extra-file pour nommer un fichier d'option, l'option doit être la première donnée sur la ligne de commande. Si non, le fichier d'options ne sera pas utilisé. Par exemple, cette commande n'utilisera pas le fichier d'option nommé:

mysql> mysqld_safe --port=port_num --defaults-file=file_name

Au lieu de cela, utilisez la commande suivante:

mysql> mysqld_safe --defaults-file=file_name --port=port_num

Le script mysqld_safe est écrit de sorte qu'il puisse normalement démarrer un serveur qui a été installé à partir d'une source ou d'une distribution binaire de MySQL, même si ce type de distribution installe généralement le serveur dans des endroits légèrement différents. (Voir la Section 2.1.5, “Configurations d'installation”.) mysqld_safe attend que l'une des suivantes conditions soit accomplie

  • le serveur et les bases de données peuvent être trouvés par rapport au fichier de travail (le répertoire dans lequel mysqld_safe est invoqué). Pour les distributions binaires, mysqld_safe cherche les répertoires bin et de données dans son fichier de travail. Pour les distributions source, il cherche des répertoires libexec et var. Cette condition doit être satisfaite si vous exécutez mysqld_safe depuis votre répertoire d'installation MySQL (par exemple, /usr/local/mysql pour une distribution binaire).
  • Si le serveur el les bases de données ne peuvent pas être trouvés par rapport au fichier de travail, mysqld_safe essaie de les localiser par des noms de chemins absolus. Des endroits typiques sont par exemple /usr/local/libexec et /usr/local/var. Les emplacements réels sont déterminés à partir des valeurs configurées dans la distribution au moment où elle a été construite. Ces emplacements devraient être les emplacements corrects si MySQL est installé dans l'emplacement spécifié au moment de la configuration.

Etant donné que mysqld_safe essaie de trouver le serveur et les bases de données par rapport à son propre fichier de travail, vous pouvez installer une distribution binaire de MySQL n'importe où, pourvu que vous exécutiez mysqld_safe depuis le répertoire d'installation de MySQL:

shell> cd mysql_installation_directory
shell> bin/mysqld_safe &

Si mysqld_safe échoue, même lorsqu'il est invoqué du répertoire d'installation de MySQL, vous pouvez spécifier les options --ledir et --datadir pour indiquer les répertoires dans lesquels se trouvent le serveur et les bases de données dans votre système.

Quand vous utilisez mysqld_safe pour démarrer mysqld, mysqld_safe organise les messages d'erreur provenant de soi-même et de mysqld pour les diriger vers la même destination.

Dans MySQL 5.1.20, il y a plusieurs options mysqld_safe pour contrôler la destination de ces messages :

  • --syslog: Ecrit les message d'erreur dans syslog dans les systèmes qui supportent le programme logger.
  • --skip-syslog: N'écrit pas les messages dans syslog. Les messages sont écrits dans le fichier log d'erreurs par défaut (host_name.err dans le répertoire de données ), ou dans dans un fichier déterminé si l'option --log-error est donnée.
  • --log-error=file_name: Ecrit les messages d'erreur dans le fichier d'erreurs déterminé.

Si aucune de ces options est donnée, l'option par défaut est --skip-syslog.

Note: Pour MySQL 5.1.20 seulement, l'option par défaut est --syslog. Cela diffère du comportement d'enregistrement pour les autres versions de MySQL, pour lesquelles l'option par défaut est d'écrire les messages dans le fichier log error par défaut.

Si --syslog et --log-error sont données, un avertissement est émis et la priorité est prise par --log-error.

Lorsque mysqld_safe écrit un message, les avis vont vers la destination d'enregistrement (syslog o bien le fichier error log) et stdout. Les erreurs sont dirigés vers la destination d'enregistrement et stderr.

Pour les versions précedentes à MySQL 5.1.20, l'enregistrement d'erreurs est controlé seulement par l'option --log-error. Si ceci est donné, les messages vont vers le fichier error designé. Si non, les messages vont au fichier error par défaut.

Normalement, vous ne devriez pas modifier le script mysqld_safe. Au lieu de cela, configurez mysqld_safe en utilisant les options de ligne de commande ou bien les options qui se trouvent dans la section [mysqld_safe] d'un fichier my.cnf. Dans de rares occasions, il pourrait être nécessaire de modifier mysqld_safe pourqu'il puisse démarrer correctement le serveur. Toutefois, si vous faites cela, votre version modifiée de mysqld_safe pourraient être remplacée si vous faites une mise à jour de MySQL dans l'avenir, donc vous devriez faire une copie de votre version modifiée pour être en mésure de la réinstaller.

Sur NetWare, mysqld_safe est un module chargeable de NetWare (NLM) qui est porté par le script shell original d' Unix. Il démarre le serveur comme suit:

  1. Il exécute un certain nombre de vérifications du système et des options.
  2. Il exécute une vérification des tables MyISAM.
  3. Il fournit une présence d'écran pour le serveur MySQL.
  4. Il démarre mysqld, fait le monitorage et le redemarrege si l'opération se termine par une erreur.
  5. Il envoie des messages d'erreur de mysqld au fichier host_name.err dans le répertoire des données.
  6. Il envoie la sortie d'écran de mysqld_safe au fichier host_name.safe dans le répertoire de données.

Comments

Comments loading...