Per le installazioni homebrew mysql, dov'è my.cnf? Ne installa uno?
Per le installazioni homebrew mysql, dov'è my.cnf? Ne installa uno?
Risposte:
Non c'è my.cnf di default. Pertanto, MySQL inizia con tutte le impostazioni predefinite. Se si desidera creare il proprio my.cnf per sovrascrivere qualsiasi impostazione predefinita, posizionarlo in /etc/my.cnf.
Inoltre, puoi eseguirlo mysql --help
e cercarlo per le posizioni di configurazione elencate.
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.
Come puoi vedere, ci sono anche alcune opzioni per bypassare i file conf o per specificare altri file da leggere quando invochi mysql dalla riga di comando.
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
era in realtà più facile trovare le linee.
Mysql homebrew contiene file di configurazione di esempio nella cartella dei file di supporto dell'installazione.
ls $(brew --prefix mysql)/support-files/my-*
Se è necessario modificare le impostazioni predefinite, è possibile utilizzare una di queste come punto di partenza.
cp $(brew --prefix mysql)/support-files/my-default.cnf /usr/local/etc/my.cnf
Come sottolineato da @rednaw, molto probabilmente ci sarà un'installazione homebrew di MySQL, /usr/local
quindi il file my.cnf non dovrebbe essere aggiunto alla /etc
cartella di sistema , quindi ho cambiato il comando per copiarlo /usr/local/etc
.
Se si utilizza MariaDB anziché MySQL, utilizzare quanto segue:
cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
/usr/local/
(che è l'impostazione predefinita penso), puoi anche inserire my.conf
in /usr/local/etc/
, che non richiede i privilegi di root.
brew --prefix mariadb
. Nella distribuzione MariaDB my-default.cnf
non esiste - quindi usa my-small.cnf
. Prova questocp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
Un modo per scoprirlo:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
invece del locate
comando su OSX
locate my.cnf
lavorato direttamente. Non ho corsosudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
ed /usr/local/etc/my.cnf
è quello che ho ottenuto
nel mio sistema lo era
nano /usr/local/etc/my.cnf.default
come modello e
nano /usr/local/etc/my.cnf
come funzionante.
Niente mi ha aiutato davvero: non ho potuto sovrascrivere le impostazioni in un file /etc/my.cnf. Quindi ho cercato come suggerito da John https://stackoverflow.com/a/7974114/717251
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
Ha trovato un altro my.cnf in
/usr/local/Cellar/mysql/5.6.21/my.cnf
la modifica di questo file ha funzionato per me! Non dimenticare di riavviare l'agente di avvio:
launchctl unload ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Aggiornare:
Se hai un'installazione abbastanza recente di homebrew, dovresti usare i comandi brew services per riavviare mysql (usa la tua versione mysql homebrew installata, cioè mysql o mysql@5.7):
brew services stop mysql
brew services start mysql
brew services stop mysql
e brew services start mysql
al posto delle launchctl unload ...
linee.
Poiché mysql --help
mostra un elenco di file, trovo utile reindirizzare il risultato ls
per vedere quale di essi esiste:
$ 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
Per il mio MySQL 5.7 (installato Homebrew), sembra che i file siano attivi /usr/local/etc/my.cnf
.
Sul tuo tipo di shell my_print_defaults --help
Nella parte inferiore del risultato, dovresti essere in grado di vedere il file da cui il server legge le configurazioni. Stampa qualcosa del genere:
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
Credo che la risposta sia no. Installare uno in ~ / .my.cnf o / usr / local / etc sembra essere la soluzione preferita.
Nel caso di Homebrew, mysql cercherebbe anche my.cnf nella sua directory Cellar, ad esempio:
/usr/local/Cellar/mysql/5.7.21/my.cnf
Nel caso in cui si preferisca mantenere la configurazione vicina ai file binari, creare my.cnf
qui se manca.
Riavvia mysql dopo la modifica:
brew services restart mysql
Versione server: 8.0.19 Homebrew. macOS Catalina 10.15.5 e MySQL installato tramite Homebrew. Ho trovato questo file qui:
/usr/local/etc/my.cnf
Questa soluzione ha aiutato :)
Per MacOS (High Sierra), MySQL che è stato installato con birra fatta in casa.
L'aumento delle variabili globali dall'ambiente mysql non ha avuto successo. Quindi in tal caso la creazione di ~ / .my.cnf è l'opzione più sicura. L'aggiunta di variabili con [mysqld] includerà le modifiche (Nota: se si cambia con [mysql], la modifica potrebbe non funzionare).
<~ / .my.cnf> [mysqld] connect_timeout = 43200 max_allowed_packet = 2048M net_buffer_length = 512M
Riavvia il server mysql. e controlla le variabili. y
sql> SELECT @@ max_allowed_packet; + ---------------------- + | @@ max_allowed_packet | + ---------------------- + | 1073741824 | + ---------------------- +
1 riga nel set (0,00 sec)