Comment trouver l’emplacement MySQL my.cnf

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

Il n’y a pas de commande MySQL interne pour tracer cela, c’est un peu trop abstrait. Le fichier peut se trouver à 5 emplacements (ou plus) et ils sont 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 plusieurs, il les chargera et les valeurs se substitueront (dans l’ordre indiqué, je pense). En outre, le paramètre --defaults-file peut remplacer l’ensemble, donc … en fait, c’est une énorme douleur dans le cul.

Mais grâce à sa confusion, il y a de bonnes chances que ce soit juste dans /etc/my.cnf.

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

Vous pouvez effectivement demander à MySQL de vous montrer la liste de tous les emplacements où il recherche my.cnf (ou my.ini sous Windows). Ce n’est pas une commande SQL bien. Au lieu de cela, exécutez:

 $ 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 recherchés. 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, sous 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 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 fournis avec la dissortingbution MySQL (sous Linux – voir les fichiers /usr/share/mysql/*.cnf et utilisez celui qui vous convient le mieux – copiez-le dans /etc/my.cnf et ensuite modifier si nécessaire).

Notez également qu’il existe également une option de ligne de commande --defaults-file qui peut définir un chemin d’access personnalisé au fichier my.cnf ou my.ini. Par exemple, c’est le cas pour MySQL 5.5 sous Windows – il pointe vers un fichier my.ini dans le répertoire de données, qui n’est normalement pas 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, consultez le https://dev.mysql.com/doc/refman/8.0/en/option-files.html – il est décrit ici plus en détail.

Vous pouvez toujours lancer la recherche dans un terminal.

 find / -name my.cnf 

Vous pouvez utiliser :

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

Cela pourrait fonctionner:

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

sur ma machine cela produit:

 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) 

Donc, il semble que /etc/mysql/my.cnf soit celui-là puisque stat64 () et read () ont réussi.

Par défaut, mysql recherche d’abord my.cnf dans le dossier / etc. S’il n’y a pas de fichier /etc/my.cnf dans ce dossier, je vous conseille d’en créer un nouveau dans ce dossier, comme indiqué par la documentation ( https://dev.mysql.com/doc/refman/5.6/fr/option -files.html ).

Vous pouvez également rechercher my.cnf existant fourni par votre installation mysql. Vous pouvez lancer la commande suivante

 sudo find / -name "*.cnf" 

Vous pouvez utiliser le fichier de configuration suivant avec la table myisam et sans le support mysql innodb (à partir de l’installation du port de mysql sur mac os x maverick). Veuillez vérifier chaque commande dans ce fichier de configuration.

 # Example MySQL config file for large systems. # # This is for a large system with memory = 512M where the system runs mainly # MySQL. # # MySQL programs look for option files in a set of # locations which depend on the deployment platform. # You can copy this option file to one of those # locations. For information about these locations, see: # http://dev.mysql.com/doc/mysql/en/option-files.html # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option. # The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /opt/local/var/run/mysql5/mysqld.sock # Here follows ensortinges for some specific programs # The MySQL server [mysqld] port = 3306 socket = /opt/local/var/run/mysql5/mysqld.sock skip-locking key_buffer_size = 256M max_allowed_packet = 1M table_open_cache = 256 sort_buffer_size = 1M read_buffer_size = 1M read_rnd_buffer_size = 4M myisam_sort_buffer_size = 64M thread_cache_size = 8 query_cache_size= 16M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 # Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # #skip-networking # Replication Master Server (default) # binary logging is required for replication log-bin=mysql-bin # binary logging format - mixed recommended binlog_format=mixed # required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set # but will not function as a master if omitted server-id = 1 # Replication Slave (comment out master section to use this) # # To configure this host as a replication slave, you can choose between # two methods : # # 1) Use the CHANGE MASTER TO command (fully described in our manual) - # the syntax is: # # CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=, # MASTER_USER=, MASTER_PASSWORD= ; # # where you replace , ,  by quoted ssortingngs and #  by the master's port number (3306 by default). # # Example: # # CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, # MASTER_USER='joe', MASTER_PASSWORD='secret'; # # OR # # 2) Set the variables below. However, in case you choose this method, then # start replication for the first time (even unsuccessfully, for example # if you mistyped the password in master-password and the slave fails to # connect), the slave will create a master.info file, and any later # change in this file to the variables' values below will be ignored and # overridden by the content of the master.info file, unless you shutdown # the slave server, delete master.info and restart the slaver server. # For that reason, you may want to leave the lines below untouched # (commented) and instead use CHANGE MASTER TO (see above) # # required unique id between 2 and 2^32 - 1 # (and different from the master) # defaults to 2 if master-host is set # but will not function as a slave if omitted #server-id = 2 # # The replication master for this slave - required #master-host =  # # The username the slave will use for authentication when connecting # to the master - required #master-user =  # # The password the slave will authenticate with when connecting to # the master - required #master-password =  # # The port the master is listening on. # optional - defaults to 3306 #master-port =  # # binary logging - not required for slaves, but recommended #log-bin=mysql-bin # Uncomment the following if you are using InnoDB tables #innodb_data_home_dir = /opt/local/var/db/mysql5 #innodb_data_file_path = ibdata1:10M:autoextend #innodb_log_group_home_dir = /opt/local/var/db/mysql5 # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high #innodb_buffer_pool_size = 256M #innodb_additional_mem_pool_size = 20M # Set .._log_file_size to 25 % of buffer pool size #innodb_log_file_size = 64M #innodb_log_buffer_size = 8M #innodb_flush_log_at_trx_commit = 1 #innodb_lock_wait_timeout = 50 [mysqldump] quick max_allowed_packet = 16M [mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates [myisamchk] key_buffer_size = 128M sort_buffer_size = 128M read_buffer = 2M write_buffer = 2M [mysqlhotcopy] interactive-timeout 

Comme noté par konyak, vous pouvez obtenir la liste des endroits que mysql recherchera dans votre fichier my.cnf en exécutant mysqladmin --help . Comme ceci est assez verbeux, vous pouvez accéder rapidement à la partie qui vous intéresse avec:

 $ mysqladmin --help | grep -A1 'Default options' 

Cela vous donnera un résultat similaire à:

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

Selon la manière dont vous avez installé mysql, il est possible qu’aucun de ces fichiers ne soit encore présent. Vous pouvez les cat afin de voir comment votre configuration est en cours de construction et créer votre propre my.cnf si nécessaire à votre emplacement préféré.

Essayez de mysqld --help --verbose | grep my.cnf | tr " " "\n" mysqld --help --verbose | grep my.cnf | tr " " "\n"

La sortie sera quelque chose comme

 /etc/my.cnf /etc/mysql/my.cnf /usr/local/etc/my.cnf ~/.my.cnf 

Si vous êtes sur un Mac avec Homebrew, utilisez

info armsage mysql

Vous verrez quelque chose comme

 $ brew info mysql mysql: stable 5.6.13 (bottled) http://dev.mysql.com/doc/refman/5.6/en/ Conflicts with: mariadb, mysql-cluster, percona-server /usr/local/Cellar/mysql/5.6.13 (9381 files, 354M) * 

Cette dernière ligne est le INSTALLERDIR par les documents MySQL

Je ne sais pas comment vous avez configuré MySQL sur votre environnement Linux, mais avez-vous vérifié?

  • /etc/my.cnf

Trouvé mine en utilisant

 mysqld --help --verbose | grep my.cnf 

Pour Ubuntu 16: /etc/mysql/mysql.conf.d/mysqld.cnf

Une autre option consiste à utiliser la commande whereis.

Par exemple, où my.cnf

Toutes les bonnes suggestions, dans mon cas, je ne l’ai trouvé dans aucun de ces endroits, mais dans /usr/share/mysql , j’ai une VM RHEL et j’ai installé mysql5.5

J’ai installé le bundle xampp avec apache, php and mysql dans ubuntu . Le fichier my.cnf se trouve dans /opt/lampp/etc/ folder. J’espère que ça aidera quelqu’un.

Répondu pour les seuls utilisateurs de MySQL Workbench,

entrer la description de l'image ici

Si vous utilisez MAMP, accédez à Modèles> MySQL (my.cnf)> [version]

Si vous utilisez MAMP sans fenêtre, vous devrez peut-être personnaliser la barre d’outils à l’aide du bouton Personnaliser.

Menu Modèles MAMP PRO

Vous devrez parcourir les différents emplacements en fonction de votre version de MySQL.

 mysqld --help -verbose | grep my.cnf For Homebrew: /usr/local/Cellar/mysql/8.0.11/bin/mysqld (mysqld 8.0.11) Default possible locations: /etc/my.cnf /etc/mysql/my.cnf ~/.my.cnf Found mine here: /usr/local/etc/my.cnf