Para las instalaciones de homebrew mysql, ¿dónde está my.cnf?

293

Para las instalaciones de homebrew mysql, ¿dónde está my.cnf? ¿Instala uno?

chrismealy
fuente

Respuestas:

263

No hay my.cnf por defecto. Como tal, MySQL comienza con todas las configuraciones predeterminadas. Si desea crear su propio my.cnf para anular cualquier defecto, colóquelo en /etc/my.cnf.

Además, puede ejecutar mysql --helpy buscar en él las ubicaciones de configuración enumeradas.

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.

Como puede ver, también hay algunas opciones para omitir los archivos conf o especificar otros archivos para leer cuando invoque mysql en la línea de comandos.

Jericon
fuente
49
Esto ya no parece ser el caso; Veo un archivo my.cnf en /usr/local/Cellar/mysql/5.6.15/ (o la versión que haya instalado)
William Turrell
66
@williamt "mysql --help" no enumera ese archivo como usado, creo que es solo un valor predeterminado que viene con los archivos de instalación
Vinicius Pinto
2
Estoy en 5.6.26 y no lo veo allí.
Adam Grant
3
Encendido el 5.6.26 se puede lolicando ejecutando: ls $(brew --prefix mysql)/*.cnf
danielgpm
23
mysql --help | grep cnfen realidad fue más fácil encontrar las líneas.
Vinilo
267

El homebrew mysql contiene archivos de configuración de muestra en la carpeta de archivos de soporte de la instalación.

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

Si necesita cambiar la configuración predeterminada, puede usar una de ellas como punto de partida.

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

Como señala @rednaw, lo más probable es que haya una instalación homebrew de MySQL, por /usr/locallo que el archivo my.cnf no debe agregarse a la /etccarpeta del sistema , por lo que he cambiado el comando para copiar el archivo /usr/local/etc.

Si está utilizando MariaDB en lugar de MySQL, use lo siguiente:

cp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
Ewalshe
fuente
44
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
Matt Clegg
77
Si Homebrew instaló MySQL en /usr/local/(que creo que es el valor predeterminado), también puede colocarlo my.confen /usr/local/etc/, que no requiere privilegios de root.
gitaarik
1
brew --prefix mysql no da la ruta correcta, para mí, muestra '/usr/local/Cellar/mysql/5.7.16', pero de hecho mariadb está instalado en '/ usr / local / opt / mariadb /'
zhaozhi
@zhaozhi Uso brew --prefix mariadb. En la distribución MariaDB, el my-default.cnfno existe, así que úselo my-small.cnf. Prueba estocp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
ewalshe
Esta debe ser la respuesta aceptada. El primero es incorrecto. La pregunta formulada se refería a homebrew.
BugHunterUK
30

Una forma de averiguarlo:

sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
John Bachir
fuente
44
Impresionante respuesta, aprendí sobre localizar.updatedb. Sin embargo, no hay un archivo de configuración por defecto, vea la respuesta a continuación
glebm
15
Puede usar en mdfind -name my.cnflugar de locatecomando en OSX
JacopKane
Para mí locate my.cnftrabajó directamente. No sudo /usr/libexec/locate.updatedb
corrí
1
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnfy /usr/local/etc/my.cnf fue lo que obtuve
Vincent Tang
18

en mi sistema era

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

como plantilla y

nano /usr/local/etc/my.cnf

como trabajando

Software Fusca
fuente
18

Nada realmente me ayudó: no pude sobrescribir la configuración en un archivo /etc/my.cnf. Así que busqué como John sugirió https://stackoverflow.com/a/7974114/717251

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

Encontró otro my.cnf en

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

¡cambiar este archivo funcionó para mí! No olvide reiniciar el Agente de inicio:

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

Actualizar:

Si tiene una instalación bastante reciente de homebrew, debe usar los comandos de brew services para reiniciar mysql (use su versión de homebrew mysql instalada, es decir, mysql o [email protected]):

brew services stop mysql
brew services start mysql
naabster
fuente
Creo que también puedes correr brew services stop mysqly brew services start mysqlen lugar de las launchctl unload ...líneas.
mhulse
1
Eso es cierto, pero al momento de escribir esta respuesta, estos comandos homebrew aún no estaban disponibles. Actualizaré la respuesta
naabster
13

Como mysql --helpmuestra una lista de archivos, me resulta útil canalizar el resultado lspara ver cuál de ellos existe:

$ 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

Para mi MySQL 5.7 (instalado Homebrew), parece que los archivos están activados /usr/local/etc/my.cnf.

Emil Stenström
fuente
10

En su tipo de shell my_print_defaults --help

En la parte inferior del resultado, debería poder ver el archivo desde el cual el servidor lee las configuraciones. Imprime algo como esto:

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
fuente
5

Puede encontrar dónde my.cnfha proporcionado el archivo el paquete específico, p. Ej.

brew list mysql # or: mariadb

Además de verificar si ese archivo se lee, puede ejecutar:

sudo fs_usage | grep my.cnf

que le mostrará la actividad del sistema de archivos en tiempo real relacionada con ese archivo.

kenorb
fuente
4

Creo que la respuesta es no. Instalar uno en ~ / .my.cnf o / usr / local / etc parece ser la solución preferida.

chrismealy
fuente
2
Solo en mi MBP /etc/my.cnf me permite afectar la instalación Homebrew de mysql.
ewalshe
1

En el caso de Homebrew, mysql también buscaría my.cnf en su directorio Cellar, por ejemplo:

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

Para el caso, uno prefiere mantener la configuración cerca de los binarios: cree my.cnfaquí si falta.

Reinicie mysql después del cambio:

brew services restart mysql
Andrey
fuente
1

Versión del servidor: 8.0.19 Homebrew. macOS Catalina 10.15.5 e instaló MySQL a través de Homebrew. Encontré este archivo aquí:

/usr/local/etc/my.cnf

Esta solución ayudó :)

Connor Leech
fuente
-1

Para MacOS (High Sierra), MySQL que se ha instalado con home brew.

El aumento de las variables globales del entorno mysql no fue exitoso. Entonces, en ese caso, la creación de ~ / .my.cnf es la opción más segura. Agregar variables con [mysqld] incluirá los cambios (Nota: si cambia con [mysql], el cambio podría no funcionar).

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

Reinicie el servidor mysql. y verifique las variables. y

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

1 fila en conjunto (0.00 seg)

lyxProtein
fuente
-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. Coloque su archivo my.cf en /usr/local/opt/mysql

  3. brew services restart mysql

Compartimiento
fuente