444 votes

Comment trouver l'emplacement du fichier my.cnf de MySQL ?

Existe-t-il une commande MySQL permettant de localiser le my.cnf de la même manière que le fichier de configuration de PHP phpinfo() situe son php.ini ?

1 votes

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

626voto

tadamson Points 2322

Il n'y a pas de commande MySQL interne pour tracer cela, c'est un peu trop abstrait. Le fichier pourrait se trouver à 5 (ou plus ?) endroits, 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'entre eux et les valeurs remplaceront les autres (dans l'ordre de la liste, je pense). De même, les --defaults-file le paramètre peut annuler l'ensemble, donc... en fait, c'est une énorme douleur dans le cul.

Mais comme cela prête à confusion, il y a de fortes chances que ce soit juste dans /etc/my.cnf.

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

0 votes

mysql: unknown variable '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é à /etc/mysql/my.cnf .

208voto

Timur Points 2284

Vous pouvez en fait "demander" à MySQL une liste de tous les emplacements où il recherche le fichier my.cnf (ou my.ini sous Windows). Il ne s'agit cependant pas d'une requête SQL. Il faut plutôt exécuter :

$ mysqladmin --help

ou, avant 5.7 :

$ mysqld --help --verbose

Dans les toutes premières lignes, vous trouverez un message avec une liste de tous les emplacements my.cnf qu'il recherche. Sur ma machine, c'est :

Default options are read from the following files in the given order:
/etc/my.cnf
/etc/mysql/my.cnf
/usr/etc/my.cnf
~/.my.cnf

Ou, sur Windows :

Default options are read from the following files in the given order:
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 toutefois que il se peut qu'il n'y ait pas de fichier my.cnf à l'un de ces emplacements . Vous pouvez donc créer le fichier par vous-même - utilisez l'un des exemples de fichiers de configuration fournis avec la distribution de MySQL (sous Linux - voir /usr/share/mysql/*.cnf et utilisez celui qui vous convient le mieux - copiez-le dans le fichier /etc/my.cnf puis modifier si nécessaire).

Notez également que il existe également une option de 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 pas normalement répertorié avec mysqld --help --verbose . Sous Windows - voir les propriétés du service pour savoir si c'est le cas pour vous.

Enfin, vérifiez le https://dev.mysql.com/doc/refman/8.0/en/option-files.html - il y est décrit plus en détail.

0 votes

Cela semble 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

Quand je l'ai lancé, j'ai eu ça : Default options are read from the following files in the given order: /etc/mysql/my.cnf /etc/my.cnf ~/.my.cnf -- J'attendais les 2 premiers fichiers dans l'ordre inverse.

0 votes

Les informations publiées par mysqld --help --verbose contredit ce qui est dit dans dev.mysql.com/doc/refman/5.5/fr/option-files.html . Dans mon expérience "récente" avec la version 5.6, les informations contenues dans le site web sont les plus correctes et les plus 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 pouvez toujours exécuter find dans un terminal.

find / -name my.cnf

1 votes

C'est le chemin le plus difficile :( Existe-t-il une commande mysql comme phpinfo() pour connaître l'emplacement du fichier de configuration ?

0 votes

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

12 votes

Wow, ça prendrait une éternité sur la plupart des machines. La plupart des linux modernes ont locate installé et tant que updatedb est lancé régulièrement, vous pouvez faire un : locate my.cnf | moins

34voto

Satish Sharma Points 1117

Vous pouvez utiliser :

locate my.cnf
whereis my.cnf
find . -name my.cnf

3 votes

Le mien était à /etc/mysql/my.cnf dans Ubuntu 12.0.1 sur EC2

2 votes

whereis ne fonctionnera pas ici ; il recherche les emplacements correspondant à un commande et ne peut pas trouver de fichiers arbitraires.

1 votes

Et updatedb pour mettre à jour la liste locate passe par - si my.cnf n'a pas été indexé

26voto

Chuck Ross Points 56

Ça pourrait marcher :

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

sur ma machine, cela donne des résultats :

stat64("/etc/my.cnf", 0xbf9faafc)       = -1 ENOENT (No such file or directory)
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 (No such file or directory)

Il semble donc que /etc/mysql/my.cnf soit le bon 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