Ubicación del archivo my.cnf en macOS

185

Estoy tratando de seguir este tutorial para habilitar el acceso remoto a MySQL. El problema es, ¿dónde debe my.cnfubicarse el archivo? Estoy usando Mac OS X Lion.

nicolas
fuente
Creo que esto pertenece a serverfault.com. Pero aún así, bienvenido a SO!
Artefact2

Respuestas:

253

Este hilo en el foro MySQL dice:

Por defecto, la instalación de OS X no usa my.cnf, y MySQL solo usa los valores predeterminados. Para configurar su propio my.cnf, puede crear un archivo directamente en / etc.

OS X proporciona ejemplos de archivos de configuración en /usr/local/mysql/support-files/.

Y si no puede encontrarlos allí, MySQLWorkbench puede crearlos para usted de la siguiente manera:

  1. Abrir una conexión
  2. Seleccionando el 'Archivo de opciones' en 'INSTANCIA' en el menú.
  3. MySQLWorkbench buscará my.cnf y si no puede encontrarlo, lo creará para usted
bfavaretto
fuente
14
Al menos el paquete de MySQL en uso para Mac OS X (mysql-5.6.17-osx10.7-x86_64 en el momento de escribir estas líneas) lo hace , de hecho, crear y utilizar un my.cnf. Se encuentra en /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy
104
es posible que desee asegurarse de que mysql se esté cargando en cualquier my.cnfarchivo que esté editando a través demysql --verbose --help | grep my.cnf
ryantuck
3
En Mac OS Sierra, todavía no estaba configurado. Tuve que copiar /usr/local/mysql/support-files/my-default.cnf a my.cnf en el mismo directorio. Tenga en cuenta que mysql está enlazado al paquete, en mi caso mysql-5.7.17-macos10.12-x86_64.
Christia
17
Acabo de hacer una instalación limpia de MySQL 5.7.19 en Mac OS 10.12 usando el .dmg de dev.mysql.com. No hay my.cnf en ninguno de los lugares que mysql --help dice que busca. Y no hay my-default.cnf en / usr / local / mysql / support-files / o en cualquier otro lugar que haya encontrado. Resulta que "a partir de MySQL 5.7.18, my-default.cnf ya no está incluido ni instalado por los paquetes de distribución" .
Chris Bartley
2
Esta respuesta es antigua y depende del instalador que utilizó para instalar mysql. Homebrew lo coloca en un lugar, el instalador de dmg lo coloca en otro
slashdottir
79

En el caso de Mac OS X Maverick cuando MySQL se instala a través de Homebrew, se encuentra en /usr/local/opt/mysql/my.cnf

Eigengrau
fuente
66
que es /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5
/ usr / local / opt / mariadb / VERSIONNUMBER / en mi caso MariaDB está instalado
Steven Lizarazo
9
El mío está en /usr/local/etc/my.cnf
Steve Tauber el
1
El mío fue /usr/local/mysql/etc. Estoy en High Sierra pero se instaló algunas versiones atrás.
Joshua Pinter
eres un salvavidas
Ishan Srivastava
56

En general, en los sistemas Unix y similares a Unix, los programas MySQL / MariaDB leen archivos de configuración / inicio en las siguientes ubicaciones (en el orden especificado):

  • /etc/my.cnf - Global
  • /etc/mysql/my.cnf - Global
  • SYSCONFDIR/my.cnf - Global

    SYSCONFDIRrepresenta el directorio especificado con la SYSCONFDIRopción de CMakecuando se creó MySQL. De manera predeterminada, este es el directorio etc. ubicado debajo del directorio de instalación compilado.

  • $MYSQL_HOME/my.cnf - Específico del servidor (solo servidor)

    MYSQL_HOMEes una variable de entorno que contiene la ruta al directorio en el que my.cnfreside el archivo específico del servidor . Si MYSQL_HOMEno está configurado e inicia el servidor utilizando el mysqld_safeprograma, mysqld_safeconfigúrelo en BASEDIRel directorio de instalación base de MySQL.

  • archivo especificado con --defaults-extra-file=pathsi hay alguno

  • ~/.my.cnf - Usuario específico
  • ~/.mylogin.cnf - Específico del usuario (solo clientes)

Fuente: Uso de archivos de opciones .

Nota: En las plataformas Unix, MySQL ignora los archivos de configuración que se pueden escribir en todo el mundo. Esto es intencional como medida de seguridad.


Además, en Mac hay una manera simple de verificarlo.

  1. Correr: sudo fs_usage | grep my.cnf

    Esto informará cualquier actividad del sistema de archivos en tiempo real relacionada con ese archivo.

  2. En otra Terminal, reinicie su MySQL / MariaDB, p. Ej.

    brew services restart mysql

    o:

    brew services restart mariadb
  3. En la terminal con fs_usage, se debe mostrar la ubicación adecuada, p. Ej.

    15:52:22  access            /usr/local/Cellar/mariadb/10.1.14/my.cnf                                         0.000002   sh          

    Entonces, si el archivo no existe, cree uno.

kenorb
fuente
66
¡Gracias! El sudo fs_usage | grep my.cnfmétodo es bastante eficiente. Encuentro este archivo en la carpeta: /usr/local/etc/my.cnf
gary
3
Gran método, sin embargo consigo varios resultados allí: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfcon my_print_defde más a la derecha de la columna. Luego, después de un tiempo, solo está /usr/local/etc/my.cnfcon mi terminal en la columna de la derecha. ¡Pero todos estos my.cnfarchivos no existen!
Andru
@Andru Si ninguno de ellos existe, cree uno nuevo.
kenorb
1
Su último conjunto de instrucciones re sudo fs_usage | grep my.cnf fue lo único que me ayudó en esta página, ya que por alguna razón desconocida mysqld no se cargaba desde las ubicaciones predeterminadas que se enumeran a través de mysql -?
redbirdo
1
Ese comando sudo fs_usage | grep my.cnf me salvó el día, Un millón de gracias.
Shashikant Soni
33

No sé qué versión de MySQL está utilizando, pero aquí hay posibles ubicaciones del archivo my.cnf para la versión 5.5 (tomada de aquí ) en Mac OS X:

  1. /etc/my.cnf
  2. /etc/mysql/my.cnf
  3. SYSCONFDIR/my.cnf
  4. $MYSQL_HOME/my.cnf
  5. defaults-extra-file(el archivo especificado con --defaults-extra-file=path, si lo hay)
  6. ~/.my.cnf
Jeffrey Chung
fuente
21

Para MySQL 5.7 en Mac OS X El Capitan: /usr/local/mysql/etc/my.cnf

Copiar conf por defecto de /usr/local/mysql/support-files/my-default.cnf

Sergio Rodrigues
fuente
44
Para ser claros, debe crear la carpeta "etc /" usted mismo y necesita privilegios de root para ese "sudo su -"
troyano
No se encuentra en ese lugar para mí. Estoy usando MAMP
Mirza Vu
@mirzavu, vea este enlace: stackoverflow.com/questions/678645/…
Sergio Rodrigues el
21

Si está utilizando macOS Sierra y el archivo no existe, ejecute

mysql --help or mysql --help | grep my.cnf

para ver las posibles ubicaciones y la secuencia de carga / lectura de my.cnf para mysql, cree el archivo my.cnf en uno de los directorios sugeridos y luego agregue la siguiente línea

[mysqld] sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION

sudo touch /{preferred-path}/my.cnfLuego puede editar el archivo para agregar el modo sql

sudo nano /{preferred-path}/my.cnf

Luego reinicie mysql, voilaah, está listo para comenzar. codificación feliz

Gpak
fuente
13

El paquete MySQL actual para Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 en el momento de escribir este artículo) crea automáticamente un my.cnf durante la instalación.

Se encuentra en /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Adaptar su ruta de acuerdo con su versión.

Jpsy
fuente
12

Así que ninguna de estas cosas funcionó para mí. Estoy usando la instalación actual de dmg del servidor de la comunidad mysql. ps muestra que todos los parámetros más críticos normalmente en my.cnf se pasan en la línea de comando, y no pude averiguar de dónde venía. Después de hacer una búsqueda de texto completo de mi cuadro, lo encontré en:

/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Por lo tanto, puede cambiarlos allí o eliminarlos para que realmente respete los que tiene en my.cnf donde haya decidido colocarlos.

¡Disfrutar!

Ejemplo de la información del archivo que se encuentra en ese archivo:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
            <string>--basedir=/usr/local/mysql</string>
            <string>--datadir=/usr/local/mysql/data</string>
            <string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
            <string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
             <string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
             <string>--early-plugin-load=keyring_file=keyring_file.so</string>

        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>
Datbates
fuente
¡Excelente! Salvaste mi día.
jenny
Tuve el mismo caso, pero también tuve que agregar mi archivo .cnf a/etc/my.cnf
Eduard Mukans
11

Puede abrir una terminal y escribir locate my.cnf

sreimer
fuente
Lamento no ser lo suficientemente específico, aparentemente necesito copiar 'my-large.cnf' en alguna carpeta y cambiarle el nombre 'my.cnf'. Pero no sé a dónde ..
nicolas
1
además, debe tener una ubicación de base de datos poblada. en mac osx: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon
10

En mysql 5.6.22, que lo instalé desde Homebrew, la ruta de my.cnf es

/usr/local/opt/mysql/my.cnf 
StevenR
fuente
10

macOs sierra 10.12.6 versión mysql: 5.7.18_1 Ejecuto localizar my.cnf y la ruta es

/usr/local/etc/my.cnf

Espero que sea de ayuda.

aginanjar
fuente
considere agregar una explicación a su respuesta
Inder
@ charles.cc.hsu: intente usar el comando locate my.cnfen su terminal. cual es el resultado?
aginanjar
6

Puede crear su archivo en cualquier directorio que desee. Después de la creación, puede "decir" la ruta a la configuración de mysql:

ingrese la descripción de la imagen aquí

Shedom Wei
fuente
6

Puedes consultar el archivo

/usr/local/bin/mysql.servery ver desde donde my.confse lee.

Por lo general, es de /etc/my.cnfo ~/my.cnfo~/.my.cnf

Vazgen Manukyan
fuente
Corrección: ~/.my.cnf. Agregue un punto antes del nombre del archivo.
indefinido
5

Para MAMP 3.5 Mac El Capitan, cree un archivo de configuración vacío separado y escriba su configuración adicional para mysql

sudo vim /Applications/MAMP/Library/my.cnf

Y agregar así

[mysqld]
max_allowed_packet = 256M
Mirza Vu
fuente
5

Abra la Terminal y use el siguiente comando:

sudo find / -name my.cnf
user33670
fuente
4

¡LEA LOS DOCUMENTOS!

Los documentos de MySQL para qué versión está utilizando le ayudarán. Por lo general, se describe como un Options Fileo MySQL Config File.
Los documentos tienen la ubicación de estos archivos en la documentación, así como otra VITALinformación como la ubicación y pequeños ejemplos de cómo debe verse el archivo de configuración.

MySQL versión 8

MySQL versión 5.7

MySQL versión 5.6

MySQL versión 5.5

MySQL versión 5.6 japonés

Notas importantes:

En las plataformas Unix, MySQL ignora los archivos de configuración que se pueden escribir en todo el mundo.

Esto es intencional como medida de seguridad.

En otras palabras, si tiene los permisos incorrectos establecidos en su archivo de configuración, NO se cargará.

Ejemplo de permiso de configuración inicial de uno de los archivos de configuración:

RIZZOMBP$ ls -lah /etc/my.cnf
-rw-r--r--  1 myusername  wheel     0B Feb 25 20:40 /etc/my.cnf

Nota:

Es posible usar !includedirectivas en archivos de opciones para incluir otros archivos de opciones y !includedirbuscar directorios específicos para archivos de opciones .....

... MySQL no garantiza el orden en que se leerán los archivos de opciones en el directorio ...

Cualquier archivo que se encuentre e incluya usando la directiva! Includedir en sistemas operativos Unix debe tener nombres de archivo que terminen en .cnf . En Windows, esta directiva busca archivos con la extensión .inio .cnf.

Ejemplos de cómo encontrar su ubicación de su configuración o archivos de registro ect .:

SQL

Esto no le mostrará el archivo de configuración, pero lo ayudará a localizar sus archivos / carpetas de instalación.

MySQL versión 5.7 y 8+

SELECT * FROM PERFORMANCE_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

Versión MySQL <= 5.6

SELECT * FROM INFORMATION_SCHEMA.GLOBAL_VARIABLES WHERE VARIABLE_VALUE LIKE '%\/%';

SHELL / Terminal

RIZZOMBP$ mysql --help | grep "Default options" -A 1

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

Crédito de comando anterior a: Erwin Mayer de ServerFault

RIZZOMBP$ mysqld --verbose --help | grep '/my.cnf' -B 1

Default options are read from the following files in the given order:
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

O

RIZZOMBP$ ps aux | grep -i mysqld | grep -v $USER

_mysql 106 0.4 2.5 4232336 422112 ?? Ss 7:01PM 0:57.12
/usr/local/mysql/bin/mysqld
--user=_mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
--plugin-dir=/usr/local/mysql/lib/plugin
--log-error=/usr/local/mysql/data/mysqld.local.err
--pid-file=/usr/local/mysql/data/mysqld.local.pid
--keyring-file-data=/usr/local/mysql/keyring/keyring
--early-plugin-load=keyring_file=keyring_file.so

Archivo de muestra

Si necesita una muestra de referencia detallada my.cnf:

  1. https://gist.github.com/search?utf8=%E2%9C%93&q=my.cnf+mysql&ref=searchresults
  2. https://www.linode.com/community/questions/5749/mysql-sample-config-files
  3. https://www.fromdual.com/mysql-configuration-file-sample

Sin afiliación / asociación a las URL

Mi sistema:

RIZZOMBP$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.14.3
BuildVersion:   18D109
RIZZOMBP$ mysql -V
mysql  Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)
RIZZOMBP$ mysqld -V
/usr/local/mysql-8.0.15-macos10.14-x86_64/bin/mysqld 
Ver 8.0.15 for macos10.14 on x86_64 (MySQL Community Server - GPL)
JayRizzo
fuente
mysql --help | grep "Opciones predeterminadas" -A 1. Esto ayudó.
wandermonk
4

Estoy ejecutando MacOS Catalina (10.15.3) y encuentro my.cnfen /usr/local/etc.

Runstone
fuente
2

Revisé macOS Sierra, el homebrew instalado MySql 5.7.12

Los archivos de soporte se encuentran en

/usr/local/opt/mysql/support-files

Simplemente copie my-default.cnfcomo /etc/my.cnfo /etc/mysql/my.cnfy la configuración se recogerá al reiniciar.

attaboyabhipro
fuente
44
Acabo de instalar 5.7.18 en 12.12.4 a través de homebrew y no están allí.
norman_h
2

macOS High Sierra versión 10.13.6

mysql Ver 14.14 Distrib 5.7.22, para osx10.13 (x86_64) usando el envoltorio EditLine Copyright (c) 2000, 2018, Oracle y / o sus afiliados. Todos los derechos reservados

Las opciones predeterminadas se leen de los siguientes archivos en el orden dado:

/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/etc/my.cnf 
~/.my.cnf
Ayoub Palangi
fuente
2

/private/etc/my.cnf para Catalina

Mac L. Lak
fuente
1

Estoy usando mysql versión 5.7.17 en macOS High Sierra versión 10.13.3 y he encontrado el archivo de configuración mysql aquí.

cd /usr/local/mysql/support-files/my-default.cnf
Reaz Murshed
fuente
Gracias por el consejo para encontrar el archivo de configuración predeterminado. Tenga en cuenta que este es solo un archivo de plantilla, por lo que querrá copiarlo en una ubicación que se encuentre mysql --verbose --help | grep my.cnfdonde será recogido, según:DO NOT EDIT THIS FILE. It's a template which will be copied to the default location during install, and will be replaced if you upgrade to a newer version of MySQL.
Joshua Pinter
1

por lo general, debería estar /usr/local/etcen Mac si no lo encuentra, puede crear uno

Pravin
fuente
0

Para Mac, lo que funcionó para mí es crear un archivo .my.cnf en mi ~ ruta. Espero que esto ayude.

Raman Singh
fuente
0

Copie /usr/local/opt/mysql/support-files/my-default.cnf como /etc/my.cnf o /etc/mysql/my.cnf y luego reinicie mysql.

Nguyen Thanh Tung
fuente
0

Para mí en versión sierra

copie la configuración predeterminada en:

/usr/local/Cellar/mysql/5.6.27/support-files/my-default.cnf

a

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

iamroald
fuente
0

En mi caso, el archivo no existía. En MySQL Workbench fui a OPTIONS FILE y encontré algunos valores predeterminados. Hice clic en aplicar. Pidió permiso. Luego creó el archivo my.cnf en / etc. Sin embargo, es muy importante tener en cuenta que la primera vez que hace clic en "aplicar", no realiza ningún cambio en la configuración predeterminada. Una vez que se ha creado el archivo, puede hacer cambios que se aplicarán cuando haga clic en "aplicar". De lo contrario, no se le mostrará el botón Aplicar cuando realice cambios.

Sameer Khanal
fuente
Tengo un archivo de opciones /etc/mysql/my.cnfpero MySQL Workbench no lo sabe. En cambio, se queja de que no se puede encontrar el archivo de configuración con una ruta vacía y luego ofrece crear un nuevo archivo.
Alan Snyder
0

Después de la versión 5.7.18 de MySQL, no proporciona el archivo de configuración predeterminado en el directorio de archivos de soporte. Por lo tanto, puede crear el archivo my.cnf manualmente en la ubicación donde leerá MySQL, como /etc/mysql/my.cnf, y agregar la configuración que desea agregar en el archivo.

Eawaun
fuente
0

Las opciones predeterminadas se leen de los siguientes archivos en el orden dado: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf

Raipure Mayank
fuente
0

Estoy ejecutando MacOS Mojave (10.14.6) y para que MySQL reconozca mi archivo de configuración, tuve que colocarlo en /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. También tengo un enlace simbólico que lo señala desde /usr/local/@mysql/etc/my.cnf.

Estaba tratando de desactivar sql_mode = only_full_group_by y establecer esa opción en el archivo de configuración era la única forma en que podía hacer que la configuración persistiera en las sesiones. Los contenidos del archivo de configuración son:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Estoy usando la instalación nativa de MySQL, no la configuración de Homebrew.

adjwilli
fuente
0

Para mysql 8.0.19, finalmente encontré my.cnf aquí: /usr/local/opt/mysql/.bottle/etc Lo copié a / usr / local / opt / mysql / y lo modifiqué. Luego reinicio el servicio mysql, funciona.

civic.LiLister
fuente