Existe-t-il une commande permettant de déterminer le fichier de configuration actuellement utilisé par MySQL 5.0?
Si vous êtes sous Linux, lancez 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
Ainsi, comme vous pouvez le voir..il répertorie les fichiers .cnf, qu’il tente d’utiliser et utilise enfin.
Tiré du livre fantastique "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
, il vous indiquera à la ligne 11 quels fichiers .cnf
il recherchera.
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 en cours de chargement.
Je suis sous 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 utilise était d'aller dans Outils d'administration> Services> MySQL56> Clic droit> Propriétés et vérifier le chemin d'accès à l'exécutable:
"C:/Programmes/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 exécuter l'instance! utilisez-le 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.
Très bon article à ce sujet:
Je viens de faire un test rapide sur Ubuntu:
installé mysql-server, 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
De plus, nous avons également trouvé l’option --defaults-file dans mysqld. Si vous spécifiez un fichier de configuration ici, seul celui-ci sera utilisé, quel que soit le résultat renvoyé par /usr/sbin/mysqld --verbose --help | grep -A 1 "Options par défaut"
J'ai trouvé cela vraiment utile:
Control Panel -> Administration Tools
Properties
Path to executable
et voyez s'il contient le chemin d'accès au my.ini/my.cfg
Certains serveurs ont plusieurs versions de MySQL installées et configurées. Assurez-vous que vous utilisez la version correcte avec une commande Unix De:
ps -ax | grep mysql
Juste au cas où vous exécutez mac , ceci peut également être réalisé en:
Sudo dtruss mysqld 2>&1 | grep cnf
Pour les personnes utilisant Windows Server avec mysql en tant que service, un moyen facile de savoir quel fichier de configuration vous utilisez est d'ouvrir le panneau de configuration des services, de rechercher votre service mysql (dans mon cas, 'MYSQL56'), de cliquer avec le bouton droit de la souris et de cliquer sur les propriétés. . Ensuite, à partir de là, vous pouvez vérifier le "Chemin de l'exécutable" qui devrait avoir un commutateur defaults-file
qui pointe vers l'emplacement de votre fichier de configuration.
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 surveillera mysqld.
Maintenant démarrez votre serveur mysql comme d'habitude. Procmon capturera les opérations en arrière-plan de mysql. Rechercher "mon". dans le volet de résultats procmon et vous trouverez à peu près ce qui suit:
Il est clair que mysql recherche successivement une liste de fichiers de configuration. Dans mon cas, il a trouvé C:\mysql-5.7.19-winx64\my.cnf
avec succès et utilise donc celui-ci.