web-dev-qa-db-fra.com

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

Pour les installations homebrew mysql, où est my.cnf? Est-ce qu'il en installe un?

281
chrismealy

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

En outre, vous pouvez exécuter mysql --help et rechercher les emplacements de configuration 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 constater, il existe également certaines options permettant de contourner les fichiers de configuration ou de spécifier d'autres fichiers à lire lorsque vous appelez mysql sur la ligne de commande.

250
Jericon

L'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 en utiliser un comme point de départ.

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

Comme @rednaw le fait remarquer, une installation homebrew de MySQL sera probablement dans /usr/local, le fichier my.cnf ne doit donc pas être ajouté au dossier system /etc. J'ai donc modifié la commande pour la copier. le fichier dans /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
267
ewalshe

Une façon de le savoir:

Sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
28
John Bachir

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 suggéré par John 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

changer 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

Mise à jour:

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

brew services stop mysql
brew services start mysql
16
naabster

dans mon système c'était

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

comme modèle et

nano /usr/local/etc/my.cnf

comme travaillant.

11
Fusca Software

Sur votre shell, tapez 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 ça:

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
10
Luis Lasser

Puisque mysql --help affiche une liste de fichiers, il est utile de diriger le résultat vers ls pour voir lequel d’entre eux 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 MySQL 5.7 (Homebrew installé), il semble que les fichiers se trouvent sur /usr/local/etc/my.cnf.

9
Emil Stenström

Je crois que la réponse est non. L'installation dans ~/.my.cnf ou/usr/local/etc semble être la solution à privilégier.

4
chrismealy

Vous pouvez trouver où le fichier my.cnf 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.

4
kenorb

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 configuration proche des binaires - créer my.cnf ici si c'est manquant.

Redémarrez mysql après le changement:

brew services restart mysql
1
Andrey

Pour MacOS (High Sierra), MySQL a été installé avec home brew.

L'augmentation des variables globales à partir de l'environnement mysql a échoué. Donc, dans ce cas, la création de ~/.my.cnf est l’option la plus sûre. L'ajout de variables avec [mysqld] inclura les modifications (Remarque: si vous modifiez avec [mysql], la modification risque de 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 ligne dans le set (0.00 sec)

0
lyxProtein