Per le installazioni homebrew mysql, dov'è my.cnf?


293

Per le installazioni homebrew mysql, dov'è my.cnf? Ne installa uno?

Risposte:


263

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 --helpe 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.


49
Questo non sembra più essere il caso; Vedo un file my.cnf in /usr/local/Cellar/mysql/5.6.15/ (o in qualsiasi versione installata)
William Turrell,

6
@williamt "mysql --help" non elenca quel file come utilizzato, penso che sia solo un valore predefinito che viene fornito con i file di installazione
Vinicius Pinto

2
Sono al 5.6.26 e non lo vedo lì.
Adam Grant,

3
On on 5.6.26 può essere lolcato eseguendo: ls $(brew --prefix mysql)/*.cnf
danielgpm

23
mysql --help | grep cnfera in realtà più facile trovare le linee.
Vinyll

267

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/localquindi il file my.cnf non dovrebbe essere aggiunto alla /etccartella 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

4
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
Matt Clegg,

7
Se Homebrew ha installato MySQL in /usr/local/(che è l'impostazione predefinita penso), puoi anche inserire my.confin /usr/local/etc/, che non richiede i privilegi di root.
gitaarik,

1
brew --prefix mysql non fornisce il percorso corretto, per me mostra '/usr/local/Cellar/mysql/5.7.16', ma in effetti mariadb è installato in '/ usr / local / opt / mariadb /'
Zhaozhi,

@zhaozhi Use brew --prefix mariadb. Nella distribuzione MariaDB my-default.cnfnon esiste - quindi usa my-small.cnf. Prova questocp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe

Questa deve essere la risposta accettata. Il primo non è corretto. La domanda posta riguardava l'homebrew.
BugHunterUK

30

Un modo per scoprirlo:

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

4
Risposta fantastica, ho imparato a individuare.Updatedb. Tuttavia, non esiste un file di configurazione per impostazione predefinita, vedere la risposta di seguito
glebm

15
È possibile utilizzare mdfind -name my.cnfinvece del locatecomando su OSX
JacopKane

Per me ha locate my.cnflavorato direttamente. Non ho corsosudo /usr/libexec/locate.updatedb
Andru il

1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfed /usr/local/etc/my.cnf è quello che ho ottenuto
Vincent Tang il

18

nel mio sistema lo era

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

come modello e

nano /usr/local/etc/my.cnf

come funzionante.


18

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

Penso che tu possa anche correre brew services stop mysqle brew services start mysqlal posto delle launchctl unload ...linee.
mhulse,

1
Questo è vero - ma al momento della stesura di questa risposta questi comandi homebrew non erano ancora disponibili. Aggiornerò la risposta
naabster

13

Poiché mysql --helpmostra un elenco di file, trovo utile reindirizzare il risultato lsper 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.


10

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

5

Puoi trovare dove my.cnfè stato fornito il file dal pacchetto specifico, ad es

brew list mysql # or: mariadb

Oltre a verificare se quel file viene letto, puoi eseguire:

sudo fs_usage | grep my.cnf

che ti mostrerà l'attività del filesystem in tempo reale relativa a quel file.


4

Credo che la risposta sia no. Installare uno in ~ / .my.cnf o / usr / local / etc sembra essere la soluzione preferita.


2
Solo sul mio MBP /etc/my.cnf mi consente di influenzare l'installazione Homebrew di mysql.
Ewalshe,

1

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.cnfqui se manca.

Riavvia mysql dopo la modifica:

brew services restart mysql

1

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 :)


-1

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)


-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. Rilascia il tuo file my.cf in /usr/local/opt/mysql

  3. brew services restart mysql

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.