Pour les installations homebrew mysql, où est my.cnf? Est-ce qu'il en installe un?
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.
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
Une façon de le savoir:
Sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
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
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.
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
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
.
Je crois que la réponse est non. L'installation dans ~/.my.cnf ou/usr/local/etc semble être la solution à privilégier.
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.
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
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)