Déterminer quel fichier de configuration est utilisé

Existe-t-il une commande pour déterminer le fichier de configuration que MySQL 5.0 utilise actuellement?

Si vous êtes sous Linux, lancez le ‘mysqld’ avec strace , par exemple strace ./mysqld .

Parmi tous les autres appels système, vous trouverez quelque chose comme:

 stat64("/etc/my.cnf", 0xbfa3d7fc) = -1 ENOENT (No such file or directory) stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4227, ...}) = 0 open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3 

Donc, comme vous pouvez le voir, il répertorie les fichiers .cnf, qu’il tente d’utiliser et qu’il utilise finalement.

Tiré du fantastique livre “High Performance MySQL” O’Reilly:

 $ which mysqld /usr/sbin/mysqld $ /usr/sbin/mysqld --verbose --help | grep -A 1 "Default options" Default options are read from the following files in the given order: /etc/mysql/my.cnf ~/.my.cnf /usr/etc/my.cnf 

Si vous exécutez mysql --verbose --help | less mysql --verbose --help | less il vous parlera de la ligne 11 dont les fichiers .cnf seront recherchés.

Vous pouvez également faire mysql --print-defaults pour vous montrer comment les valeurs de configuration seront utilisées. Cela peut également être utile pour identifier le fichier de configuration à charger.

Je suis sur Windows et j’ai installé la version la plus récente de la communauté MySQL 5.6

Ce que j’ai fait pour voir ce que le fichier de configuration utilisait était d’aller dans Outils d’administration> Services> MySQL56> Cliquez avec le bouton droit sur> Propriétés et vérifiez le chemin d’access à l’exécutable:

“C: / Program Files / MySQL / Serveur MySQL 5.6 / bin \ mysqld” –defaults-file = “C: \ ProgramData \ MySQL \ Serveur MySQL 5.6 \ my.ini” MySQL56

Une alternative est d’utiliser

 mysqladmin variables 

mysqld –help –verbose est dangereux. Vous pouvez facilement écraser pidfile pour l’instance en cours d’exécution! l’utiliser avec –pid-file = XYZ

Oh, et vous ne pouvez pas vraiment l’utiliser si vous avez plus d’une instance en cours d’exécution. Il ne vous montrera que la valeur par défaut.

Vraiment un bon article à ce sujet:

Comment trouver le fichier de configuration MySQL?

Je viens de faire un test rapide sur Ubuntu:

  • mysql-server installé, qui a créé /etc/mysql/my.cnf

  • mysqld –verbose –help | grep -A 1 “Options par défaut”

110112 13:35:26 [Note] Le plugin ‘FEDERATED’ est désactivé.
Les options par défaut sont lues dans les fichiers suivants dans l’ordre indiqué: /etc/my.cnf /etc/mysql/my.cnf /usr/etc/my.cnf ~ / .my.cnf

  • créé /etc/my.cnf et /usr/etc/my.cnf, chacun avec un numéro de port différent

  • redémarré mysql – il utilisait le numéro de port défini dans /usr/etc/my.cnf

Par ailleurs, nous avons trouvé l’option –defaults-file dans le fichier mysqld. Si vous spécifiez un fichier de configuration, seul celui-ci sera utilisé, indépendamment de ce qui est renvoyé par / usr / sbin / mysqld –verbose –help | grep -A 1 “Options par défaut”

J’ai trouvé cela très utile:

  1. Trouvez le processus MySQL dans Services sous Control Panel -> Administration Tools
  2. Cliquez avec le bouton droit de la souris et choisissez Properties
  3. Cliquez et sélectionnez le Path to executable et voir s’il contient le chemin d’access à my.ini/my.cfg

Certains serveurs ont plusieurs versions de MySQL installées et configurées. Assurez-vous que vous utilisez la version correcte exécutée avec une commande Unix de:

 ps -ax | grep mysql 

En utilisant MySQL Workbench, il sera affiché sous “Statut du serveur”: entrer la description de l'image ici

Pour les utilisateurs de Windows Server avec mysql en tant que service, un moyen simple de trouver le fichier de configuration que vous utilisez est d’ouvrir le panneau de configuration des services, de trouver votre service mysql (dans mon cas ‘MYSQL56’) . Ensuite, à partir de là, vous pouvez vérifier le “chemin d’access à l’exécutable” qui doit avoir un paramètre par defaults-file qui pointe vers votre fichier de configuration.

Juste au cas où vous exécutez mac, cela peut également être réalisé par:

 sudo dtruss mysqld 2>&1 | grep cnf 

Si vous êtes sous Windows, vous pouvez utiliser Sysinternals procmon . Ouvrez-le et configurez le paramètre de filtre comme ceci, puis cliquez sur “Ajouter”. Maintenant, procmon va surveiller mysqld.

entrer la description de l'image ici

Maintenant, démarrez votre serveur mysql normalement. Procmon va capturer les opérations en arrière-plan de mysql. Rechercher “mon” dans le volet de résultat procmon et vous trouverez quelque chose comme ceci:

entrer la description de l'image ici

Il est clair que mysql recherche à son tour une liste de fichiers de configuration. Dans mon cas, il a trouvé C:\mysql-5.7.19-winx64\my.cnf avec succès, donc il utilise celui-ci.