Para las instalaciones de homebrew mysql, ¿dónde está my.cnf? ¿Instala uno?
Para las instalaciones de homebrew mysql, ¿dónde está my.cnf? ¿Instala uno?
Respuestas:
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 --help
y 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.
ls $(brew --prefix mysql)/*.cnf
mysql --help | grep cnf
en realidad fue más fácil encontrar las líneas.
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/local
lo que el archivo my.cnf no debe agregarse a la /etc
carpeta 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
sudo cp $(brew --prefix mysql)/support-files/my-default.cnf /etc/my.cnf
/usr/local/
(que creo que es el valor predeterminado), también puede colocarlo my.conf
en /usr/local/etc/
, que no requiere privilegios de root.
brew --prefix mariadb
. En la distribución MariaDB, el my-default.cnf
no existe, así que úselo my-small.cnf
. Prueba estocp $(brew --prefix mariadb)/support-files/my-small.cnf /usr/local/etc/my.cnf
Una forma de averiguarlo:
sudo /usr/libexec/locate.updatedb
# wait a few minutes for it to finish
locate my.cnf
mdfind -name my.cnf
lugar de locate
comando en OSX
locate my.cnf
trabajó directamente. No sudo /usr/libexec/locate.updatedb
/usr/local/Cellar/mysql/8.0.16/.bottle/etc/my.cnf
y /usr/local/etc/my.cnf
fue lo que obtuve
en mi sistema era
nano /usr/local/etc/my.cnf.default
como plantilla y
nano /usr/local/etc/my.cnf
como trabajando
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 mysql@5.7):
brew services stop mysql
brew services start mysql
brew services stop mysql
y brew services start mysql
en lugar de las launchctl unload ...
líneas.
Como mysql --help
muestra una lista de archivos, me resulta útil canalizar el resultado ls
para 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
.
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
Puede encontrar dónde my.cnf
ha 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.
Creo que la respuesta es no. Instalar uno en ~ / .my.cnf o / usr / local / etc parece ser la solución preferida.
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.cnf
aquí si falta.
Reinicie mysql después del cambio:
brew services restart mysql
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ó :)
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)
$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
Coloque su archivo my.cf en /usr/local/opt/mysql
brew services restart mysql