Pour les installations homebrew mysql, où est my.cnf?

293

Pour les installations homebrew mysql, où est my.cnf? En installe-t-il un?

chrismealy
la source

Réponses:

263

Il n'y a pas my.cnf par défaut. En tant que tel, MySQL démarre avec tous les paramètres par défaut. Si vous souhaitez créer votre propre my.cnf pour remplacer les valeurs par défaut, placez-le dans /etc/my.cnf.

En outre, vous pouvez l'exécuter mysql --helpet le rechercher pour les emplacements de conf répertoriés.

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 
The following groups are read: mysql client
The following options may be given as the first argument:
--print-defaults        Print the program argument list and exit.
--no-defaults           Don't read default options from any option file.
--defaults-file=#       Only read default options from the given file #.
--defaults-extra-file=# Read this file after the global files are read.

Comme vous pouvez le voir, il existe également des options pour contourner les fichiers conf ou pour spécifier d'autres fichiers à lire lorsque vous appelez mysql sur la ligne de commande.

Jericon
la source
49
Cela ne semble plus être le cas; Je vois un fichier my.cnf dans /usr/local/Cellar/mysql/5.6.15/ (ou la version que vous avez installée)
William Turrell
6
@williamt "mysql --help" ne répertorie pas ce fichier comme étant utilisé, je pense que c'est juste un fichier par défaut fourni avec les fichiers d'installation
Vinicius Pinto
2
Je suis sur 5.6.26 et je ne le vois pas là.
Adam Grant du
3
Le 5.6.26 peut être lolcé en exécutant: ls $(brew --prefix mysql)/*.cnf
danielgpm
23
mysql --help | grep cnfétait en fait plus facile de trouver les lignes.
vinyll
267

Le homebrew mysql contient des exemples de fichiers de configuration dans le dossier des fichiers de support de l'installation.

ls $(brew --prefix mysql)/support-files/my-*

Si vous devez modifier les paramètres par défaut, vous pouvez utiliser l'un d'eux comme point de départ.

cp $(brew --prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf

Comme le souligne @rednaw, une installation homebrew de MySQL sera probablement présente, /usr/localdonc le fichier my.cnf ne doit pas être ajouté au /etcdossier système , j'ai donc changé la commande pour copier le fichier /usr/local/etc.

Si vous utilisez MariaDB plutôt que MySQL, utilisez ce qui suit:

cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe
la source
4
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
Matt Clegg
7
Si Homebrew a installé MySQL dans /usr/local/(qui est la valeur par défaut je pense), vous pouvez également placer my.confin /usr/local/etc/, qui ne nécessite pas de privilèges root.
gitaarik
1
brew --prefix mysql ne donne pas le chemin correct, pour moi, il montre '/usr/local/Cellar/mysql/5.7.16', mais en effet mariadb est installé dans '/ usr / local / opt / mariadb /'
zhaozhi
@zhaozhi Use brew --prefix mariadb. Dans la distribution MariaDB, le my-default.cnfn'existe pas - utilisez donc my-small.cnf. Essayez cecicp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe
Cela doit être la réponse acceptée. Le premier est incorrect. La question posée concernait l'homebrew.
BugHunterUK
30

Une façon de le savoir:

sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
John Bachir
la source
4
Réponse géniale, j'ai appris sur Locate.updatedb. Cependant, il n'y a pas de fichier de configuration par défaut, voir la réponse ci
glebm
15
Vous pouvez utiliser à la mdfind -name my.cnfplace de la locatecommande sur OSX
JacopKane
Pour moi, j'ai locate my.cnftravaillé directement. Je n'ai pas courusudo /usr/libexec/locate.updatedb
Andru
1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfet /usr/local/etc/my.cnf c'est ce que j'ai eu
Vincent Tang
18

dans mon système c'était

nano /usr/local/etc/my.cnf.default 

comme modèle et

nano /usr/local/etc/my.cnf

comme travail.

Logiciel Fusca
la source
18

Rien ne m'a vraiment aidé - je ne pouvais pas écraser les paramètres dans un fichier /etc/my.cnf. J'ai donc cherché comme John l'a suggéré https://stackoverflow.com/a/7974114/717251

sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf

Il a trouvé un autre my.cnf dans

/usr/local/Cellar/mysql/5.6.21/my.cnf

la modification de ce fichier a fonctionné pour moi! N'oubliez pas de redémarrer l'agent de lancement:

launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Mettre à jour:

Si vous avez une installation assez récente de homebrew, vous devez utiliser les commandes brew services pour redémarrer mysql (utilisez votre version installée de homebrew mysql, c'est-à-dire mysql ou [email protected]):

brew services stop mysql
brew services start mysql
naabster
la source
Je pense que vous pouvez également courir brew services stop mysqlet brew services start mysqlà la place des launchctl unload ...lignes.
mhulse
1
C'est vrai - mais au moment d'écrire cette réponse, ces commandes homebrew n'étaient pas encore disponibles. Je mettrai à jour la réponse
naabster
13

Puisqu'il mysql --helpaffiche une liste de fichiers, je trouve utile de diriger le résultat lspour voir lesquels existent:

$ mysql --help | grep /my.cnf | xargs ls
ls: /etc/my.cnf: No such file or directory
ls: /etc/mysql/my.cnf: No such file or directory
ls: ~/.my.cnf: No such file or directory
/usr/local/etc/my.cnf

Pour mon (Homebrew installé) MySQL 5.7, il semble que les fichiers soient activés /usr/local/etc/my.cnf.

Emil Stenström
la source
10

Sur votre type de coque my_print_defaults --help

Au bas du résultat, vous devriez pouvoir voir le fichier à partir duquel le serveur lit les configurations. Il imprime quelque chose comme ceci:

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
Luis Lasser
la source
5

Vous pouvez trouver où le my.cnffichier a été fourni par le package spécifique, par exemple

brew list mysql # or: mariadb

En plus de vérifier si ce fichier est lu, vous pouvez exécuter:

sudo fs_usage | grep my.cnf

qui vous montrera l'activité du système de fichiers en temps réel liée à ce fichier.

Kenorb
la source
4

Je crois que la réponse est non. L'installation d'un dans ~ / .my.cnf ou / usr / local / etc semble être la solution préférée.

chrismealy
la source
2
Sur mon MBP uniquement /etc/my.cnf me permet d'affecter l'installation Homebrew de mysql.
ewalshe
1

Dans le cas de Homebrew, mysql rechercherait également my.cnf dans son répertoire Cellar, par exemple:

/usr/local/Cellar/mysql/5.7.21/my.cnf

Pour le cas on préfère garder la config proche des binaires - créez my.cnfici si elle manque.

Redémarrez mysql après le changement:

brew services restart mysql
Andrey
la source
1

Version du serveur: 8.0.19 Homebrew. macOS Catalina 10.15.5 et installé MySQL via Homebrew. Trouvé ce fichier ici:

/usr/local/etc/my.cnf

Cette solution a aidé :)

Connor Leech
la source
-1

Pour MacOS (High Sierra), MySQL qui a été installé avec Home Brew.

L'augmentation des variables globales de l'environnement mysql n'a pas réussi. Dans ce cas, la création de ~ / .my.cnf est l'option la plus sûre. L'ajout de variables avec [mysqld] inclura les changements (Remarque: si vous changez avec [mysql], le changement pourrait ne pas fonctionner).

<~ / .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M

Redémarrez le serveur mysql. et vérifiez les variables. y

sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +

1 rangée en jeu (0,00 sec)

lyxProtein
la source
-1
  1. $ps aux | grep mysqld /usr/local/opt/mysql/bin/mysqld --basedir=/usr/local/opt/mysql --datadir=/usr/local/var/mysql --plugin-dir=/usr/local/opt/mysql/lib/plugin

  2. Déposez votre fichier my.cf dans /usr/local/opt/mysql

  3. brew services restart mysql

Poubelle
la source