444 votes

Comment puis-je trouver l'emplacement de MySQL my.cnf

Y a-t-il une commande MySQL pour localiser le fichier de configuration my.cnf, similaire à la façon dont phpinfo() de PHP localise son php.ini?

1 votes

Sur ubuntu, vous pouvez utiliser la commande locate my.cnf pour trouver où se trouvent tous les noms de fichiers de ce type

626voto

tadamson Points 2322

Il n'y a pas de commande MySQL interne pour retracer cela, c'est un peu trop abstrait. Le fichier pourrait se trouver dans 5 (ou plus ?) emplacements, et ils seraient tous valides car ils se chargent en cascade.

  • /etc/my.cnf
  • /etc/mysql/my.cnf
  • $MYSQL_HOME/my.cnf
  • [datadir]/my.cnf
  • ~/.my.cnf

Ce sont les emplacements par défaut que MySQL examine. S'il en trouve plus d'un, il chargera chacun d'eux et les valeurs se remplaceront mutuellement (dans l'ordre indiqué, je pense). De plus, le paramètre --defaults-file peut tout remplacer, donc... en gros, c'est un énorme casse-tête.

Mais grâce à sa confusion, il y a de fortes chances qu'il se trouve simplement dans /etc/my.cnf.

(Si vous voulez juste voir les valeurs : SHOW VARIABLES, mais vous aurez besoin des autorisations pour le faire.)

Exécutez mysql --help et vous verrez :

Les options par défaut sont lues dans l'ordre suivant à partir des fichiers suivants : /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf

description de l'image

0 votes

mysql: variable inconnue 'defaults-file=...

7 votes

Assurez-vous de redémarrer le serveur MySQL après avoir modifié my.cnf : /etc/init.d/mysqld restart.

4 votes

Pour moi (AWS EC2 Ubuntu), my.cnf est situé dans /etc/mysql/my.cnf.

208voto

Timur Points 2284

Vous pouvez en fait "demander" à MySQL une liste de tous les emplacements où il recherche my.cnf (ou my.ini sur Windows). Ce n'est pas une requête SQL cependant. Exécutez plutôt :

$ mysqladmin --help

ou, avant la version 5.7 :

$ mysqld --help --verbose

Dans les toutes premières lignes, vous trouverez un message avec une liste de tous les emplacements de my.cnf recherchés. Sur ma machine, il s'agit de :

Les options par défaut sont lues à partir des fichiers suivants dans l'ordre donné :
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf

Ou, sur Windows :

Les options par défaut sont lues à partir des fichiers suivants dans l'ordre donné :
C:\Windows\my.ini
C:\Windows\my.cnf
C:\my.ini
C:\my.cnf
C:\Program Files\MySQL\MySQL Server 5.5\my.ini
C:\Program Files\MySQL\MySQL Server 5.5\my.cnf

Notez cependant qu'il se peut qu'il n'y ait pas de fichier my.cnf à aucun de ces emplacements. Vous pouvez donc créer le fichier vous-même - utilisez l'un des fichiers de configuration d'exemple fournis avec la distribution MySQL (sur Linux - consultez les fichiers /usr/share/mysql/*.cnf et utilisez celui qui vous convient - copiez-le dans /etc/my.cnf et modifiez-le si nécessaire).

Notez également qu'il existe également une option en ligne de commande --defaults-file qui peut définir un chemin personnalisé vers le fichier my.cnf ou my.ini. Par exemple, c'est le cas pour MySQL 5.5 sur Windows - il pointe vers un fichier my.ini dans le répertoire de données, qui n'est généralement pas répertorié avec mysqld --help --verbose. Sur Windows - consultez les propriétés du service pour savoir si c'est le cas pour vous.

Enfin, consultez le https://dev.mysql.com/doc/refman/8.0/en/option-files.html - il est décrit plus en détail là-bas.

0 votes

A semblé prometteur mais sur ma distribution (opencsw.org), il n'y a pas de mysqld. Il exécute mysqld_safe. "mysqld_safe --verbose --help" n'est pas reconnu.

0 votes

Lorsque je l'ai exécuté, j'ai obtenu ceci : Les options par défaut sont lues à partir des fichiers suivants dans l'ordre donné : /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf -- Je m'attendais à ce que les 2 premiers fichiers soient en ordre inverse.

0 votes

Les informations publiées par mysqld --help --verbose contredisent ce qui est indiqué dans dev.mysql.com/doc/refman/5.5/en/option-files.html. Dans mon expérience "récente à ce jour" avec la version 5.6, les informations sur le site web sont les plus correctes et pertinentes. La priorité de l'emplacement des fichiers donnée par la commande d'aide est trompeuse et conduira à des résultats négatifs.

67voto

Dyllon Points 527

Vous pourriez toujours exécuter la commande find dans un terminal.

find / -name my.cnf

1 votes

C'est la méthode difficile :( Y a-t-il une commande mysql comme le phpinfo() pour connaître l'emplacement du fichier de configuration ?

0 votes

find / -name my.cnf est la meilleure option, mais vous pouvez également vérifier votre dossier personnel et /etc/mysql/my.conf. Vous pouvez aussi vérifier si votre MYSQL_HOME est défini en tapant echo $MYSQL_HOME dans un terminal.

12 votes

Wow, cela prendrait une éternité sur la plupart des machines. La plupart des distributions Linux modernes ont locate installé et tant que updatedb est exécuté régulièrement, vous pouvez faire : locate my.cnf | less

34voto

Satish Sharma Points 1117

Vous pouvez utiliser :

localiser my.cnf
où est my.cnf
trouver . -name my.cnf

3 votes

Génial, la mienne était à /etc/mysql/my.cnf dans Ubuntu 12.0.1 sur EC2

2 votes

whereis ne fonctionnera pas ici ; il recherche les emplacements correspondant à une commande, et ne peut pas trouver des fichiers arbitraires.

1 votes

Et updatedb pour mettre à jour la liste de fichiers locaux - si my.cnf n'était pas indexé

26voto

Chuck Ross Points 56

Cela pourrait fonctionner:

strace mysql ";" 2>&1  | grep cnf

sur ma machine cela affiche:

stat64("/etc/my.cnf", 0xbf9faafc)       = -1 ENOENT (Aucun fichier ou dossier de ce type)
stat64("/etc/mysql/my.cnf", {st_mode=S_IFREG|0644, st_size=4271, ...}) = 0
open("/etc/mysql/my.cnf", O_RDONLY|O_LARGEFILE) = 3
read(3, "# /etc/mysql/my.cnf: The global "..., 4096) = 4096
stat64("/home/xxxxx/.my.cnf", 0xbf9faafc) = -1 ENOENT (Aucun fichier ou dossier de ce type)

Il semble donc que /etc/mysql/my.cnf soit le bon fichier puisque stat64() et read() ont réussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X