Posizione del file my.cnf su macOS


185

Sto cercando di seguire questo tutorial per abilitare l'accesso remoto a MySQL. Il problema è, dove dovrebbe my.cnftrovarsi il file? Sto usando Mac OS X Lion.


Penso che questo appartenga a serverfault.com. Ma comunque, benvenuto in SO!
Artefatto2

Risposte:


253

Questo thread sul forum MySQL dice:

Per impostazione predefinita, l'installazione di OS X non utilizza my.cnf e MySQL utilizza solo i valori predefiniti. Per configurare il tuo my.cnf, puoi semplicemente creare un file direttamente in / etc.

OS X fornisce esempi di file di configurazione su /usr/local/mysql/support-files/.

E se non riesci a trovarli lì, MySQLWorkbench può crearli per te:

  1. Aprire una connessione
  2. Selezionando il "File delle opzioni" in "ISTANZA" nel menu.
  3. MySQLWorkbench cercherà my.cnf e se non lo trova, lo creerà per te

14
Almeno il pacchetto MySQL corrente per Mac OS X (mysql-5.6.17-osx10.7-x86_64 al momento della scrittura) fa infatti creare e utilizzare un my.cnf. Si trova in /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy

104
potresti voler assicurarti che mysql stia effettivamente caricando in qualunque my.cnffile stai modificandomysql --verbose --help | grep my.cnf
ryantuck

3
Su Mac OS Sierra, non era già configurato. Ho dovuto copiare /usr/local/mysql/support-files/my-default.cnf su my.cnf nella stessa directory. Si noti che mysql è collegato al pacchetto, nel mio caso mysql-5.7.17-macos10.12-x86_64.
Christia,

17
Ho appena eseguito un'installazione pulita di MySQL 5.7.19 su Mac OS 10.12 utilizzando .dmg da dev.mysql.com. Non c'è my.cnf in nessuno dei luoghi in cui mysql - help dice che cerca. E non c'è my-default.cnf in / usr / local / mysql / support-files / o in qualsiasi altro posto che ho trovato. Si scopre che "a partire da MySQL 5.7.18, my-default.cnf non è più incluso o installato dai pacchetti di distribuzione" .
Chris Bartley,

2
Questa risposta è vecchia e dipende dall'installer utilizzato per installare mysql. Homebrew lo mette in un posto, l'installer di dmg lo mette in un altro
slashdottir,

79

Nel caso di Mac OS X Maverick quando MySQL è installato tramite Homebrew si trova all'indirizzo /usr/local/opt/mysql/my.cnf


6
che è /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5

/ usr / local / opt / mariadb / VERSIONNUMBER / nel mio caso MariaDB è installato
Steven Lizarazo,

9
Il mio è in /usr/local/etc/my.cnf
Steve Tauber,

1
Il mio era /usr/local/mysql/etc. Sono su High Sierra ma è stato installato alcune versioni indietro.
Joshua Pinter,

sei un salvavita
Ishan Srivastava,

56

In generale, su sistemi Unix e simili a Unix, i programmi MySQL / MariaDB leggono i file di configurazione / avvio nei seguenti percorsi (nell'ordine specificato):

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

    SYSCONFDIRrappresenta la directory specificata con l' SYSCONFDIRopzione a CMakequando è stato creato MySQL. Per impostazione predefinita, questa è la directory etc situata nella directory di installazione compilata.

  • $MYSQL_HOME/my.cnf - Specifico per il server (solo server)

    MYSQL_HOMEè una variabile di ambiente che contiene il percorso della directory in cui my.cnfrisiede il file specifico del server . Se MYSQL_HOMEnon è impostato e si avvia il server utilizzando il mysqld_safeprogramma, lo mysqld_safeimposta su BASEDIR, la directory di installazione di base di MySQL.

  • file specificato con l' --defaults-extra-file=patheventuale

  • ~/.my.cnf - Specifico per l'utente
  • ~/.mylogin.cnf - Specifico per l'utente (solo client)

Fonte: utilizzo dei file delle opzioni .

Nota: sulle piattaforme Unix, MySQL ignora i file di configurazione che sono scrivibili in tutto il mondo. Questo è intenzionale come misura di sicurezza.


Inoltre su Mac esiste un modo semplice per verificarlo.

  1. Correre: sudo fs_usage | grep my.cnf

    Questo riporterà qualsiasi attività del filesystem in tempo reale relativa a quel file.

  2. In un altro Terminale, riavvia il tuo MySQL / MariaDB, ad es

    brew services restart mysql

    o:

    brew services restart mariadb
  3. Sul terminale con fs_usage, dovrebbe essere mostrata la posizione corretta, ad es

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

    Quindi, se il file non esiste, creane uno.


6
Grazie! il sudo fs_usage | grep my.cnfmetodo è abbastanza efficiente. Trovo questo file nella cartella: /usr/local/etc/my.cnf
gary

3
Ottimo metodo, tuttavia ottengo risultati diversi lì: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfcon my_print_defnella colonna più a destra. Poi dopo un po 'è solo /usr/local/etc/my.cnfcon il mio terminale nella colonna più a destra. Ma tutti questi my.cnffile non esistono!
Andru,

@Andru Se nessuno di essi esiste, creane uno nuovo.
Kenorb,

1
L'ultima serie di istruzioni riguarda su fs_usage | grep my.cnf è stata l'unica cosa che mi ha aiutato in questa pagina, poiché per qualche ragione sconosciuta mysqld non si stava caricando dalle posizioni predefinite elencate tramite mysql -?
Redbirdo,

1
Quel comando sudo fs_usage | grep my.cnf mi ha salvato la giornata, grazie mille.
Shashikant Soni,

33

Non so quale versione di MySQL stai usando, ma qui ci sono possibili posizioni del file my.cnf per la versione 5.5 (presa da qui ) su 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(il file specificato con --defaults-extra-file=path, se presente)
  6. ~/.my.cnf


21

Se stai usando macOS Sierra e il file non esiste, esegui

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

per vedere le possibili posizioni e la sequenza di caricamento / lettura di my.cnf per mysql, quindi creare il file my.cnf in una delle directory suggerite, quindi aggiungere la seguente riga

[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.cnfquindi possibile modificare il file per aggiungere la modalità sql da

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

Quindi riavvia mysql, voilà, sei a posto. buona programmazione


13

L' attuale pacchetto MySQL per Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 al momento della stesura di questo documento) crea automaticamente un file my.cnf durante l'installazione.

Si trova in /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Adatta il tuo percorso in base alla tua versione.


12

Quindi nessuna di queste cose ha funzionato per me. Sto usando l'attuale installazione dmg del server della comunità mysql. ps mostra che tutti i parametri più critici normalmente in my.cnf sono passati sulla riga di comando e non sono riuscito a capire da dove venisse. Dopo aver fatto una ricerca a testo integrale della mia scatola l'ho trovata in:

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

Quindi puoi cambiarli lì o eliminarli in modo che rispettino effettivamente quelli che hai nel tuo my.cnf ovunque tu abbia deciso di metterlo.

Godere!

Esempio delle informazioni sul file trovate in quel file:

<?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>

grande! mi hai salvato la giornata.
jenny,

Ho avuto lo stesso caso, ma ho anche dovuto aggiungere il file my.cnf a/etc/my.cnf
Eduard Mukans,

11

È possibile aprire un terminale e digitare locate my.cnf


Mi dispiace non essere abbastanza specifico, apparentemente ho bisogno di copiare "my-large.cnf" in qualche cartella e rinominarlo "my.cnf". Ma non so dove ...
Nicolas

1
inoltre, è necessario disporre di un db di localizzazione popolato. su mac osx: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon

10

In mysql 5.6.22, che l'ho installato da Homebrew, il percorso di my.cnf è

/usr/local/opt/mysql/my.cnf 

10

macOs sierra 10.12.6 versione mysql: 5.7.18_1 Corro individuare my.cnf e il percorso è

/usr/local/etc/my.cnf

spero che sia d'aiuto.


valuta la possibilità di aggiungere una spiegazione al tuo post
Inder,

@ charles.cc.hsu: prova a usare il comando locate my.cnfsul tuo terminale. qual è il risultato?
aginanjar

6

È possibile creare il file in qualsiasi directory desiderata. Dopo la creazione, puoi "dire" il percorso alla configurazione di mysql:

inserisci qui la descrizione dell'immagine


6

Puoi controllare il file

/usr/local/bin/mysql.servere vedere da dove my.confviene letto.

Di solito viene da /etc/my.cnfo ~/my.cnfo~/.my.cnf


Correzione: ~/.my.cnf. Aggiungi un punto prima del nome del file.
indefinito

5

Per MAMP 3.5 Mac El Capitan, crea un file di configurazione vuoto separato e scrivi le tue impostazioni aggiuntive per mysql

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

E aggiungi in questo modo

[mysqld]
max_allowed_packet = 256M

5

Apri Terminale e usa il comando seguente:

sudo find / -name my.cnf

4

LEGGI I DOCUMENTI!

Aiuteranno i documenti MySQL per la versione in uso. Di solito è descritto come un Options Fileo MySQL Config File.
I documenti hanno la posizione di questi file nella documentazione, così come altre VITALinformazioni come la posizione e piccoli esempi di come deve essere il file di configurazione.

MySQL versione 8

Versione MySQL 5.7

MySQL versione 5.6

MySQL versione 5.5

MySQL versione 5.6 giapponese

Note importanti:

Su piattaforme Unix, MySQL ignora i file di configurazione che sono scrivibili in tutto il mondo.

Questo è intenzionale come misura di sicurezza.

In altre parole, se hai le autorizzazioni sbagliate impostate sul tuo file di configurazione NON verrà caricato.

Esempio di autorizzazione iniziale per l'installazione di uno dei file di configurazione:

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

Nota:

È possibile utilizzare le !includedirettive nei file delle opzioni per includere altri file delle opzioni e!includedir cercare directory specifiche per i file delle opzioni .....

... MySQL non fornisce alcuna garanzia sull'ordine in cui verranno letti i file delle opzioni nella directory ...

Tutti i file che possono essere trovati e inclusi usando la direttiva! Includedir sui sistemi operativi Unix devono avere i nomi dei file che finiscono .cnf. Su Windows, questa direttiva controlla i file con l' estensione .inio .cnf.

Esempi di come trovare la posizione della tua configurazione o file di registro ect .:

SQL

Questo non ti mostrerà il file di configurazione ma ti aiuterà a localizzare i tuoi file / cartelle di installazione.

MySQL versione 5.7 e 8+

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

Versione 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

Sopra il credito di comando a: Erwin Mayer di 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

File di esempio

Se hai bisogno di un esempio di riferimento dettagliato 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

Nessuna affiliazione / associazione agli URL

Il mio 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)

mysql --help | grep "Opzioni predefinite" -A 1. questo ha aiutato.
Wandermonk,

4

Io corro MacOS Catalina (10.15.3) e trovare my.cnfin /usr/local/etc.


2

Ho controllato macOS Sierra, l'homebrew installato MySql 5.7.12

I file di supporto si trovano in

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

Basta copiare my-default.cnfcome /etc/my.cnfo /etc/mysql/my.cnfe la configurazione verrà recuperata al riavvio.


4
Ho appena installato 5.7.18 il 12.12.4 tramite homebrew e non ci sono.
norman_h

2

macOS High Sierra versione 10.13.6

mysql Ver 14.14 Distribuire 5.7.22, per osx10.13 (x86_64) utilizzando il wrapper EditLine Copyright (c) 2000, 2018, Oracle e / o le sue affiliate. Tutti i diritti riservati

Le opzioni predefinite vengono lette dai seguenti file nell'ordine indicato:

/etc/my.cnf 
/etc/mysql/my.cnf 
/usr/local/etc/my.cnf 
~/.my.cnf


1

Sto usando mysql versione 5.7.17 in macOS High Sierra versione 10.13.3 e ho trovato il file di configurazione mysql qui.

cd /usr/local/mysql/support-files/my-default.cnf

Grazie per il suggerimento su come trovare il file di configurazione predefinito. Nota, questo è solo un file modello, quindi ti consigliamo di copiarlo in una posizione trovata in mysql --verbose --help | grep my.cnfcui verrà prelevato, come da: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

dovrebbe essere normalmente /usr/local/etcsu Mac se non lo trovi puoi crearne uno


0

Per Mac, ciò che ha funzionato per me è la creazione di un file .my.cnf nel mio percorso ~. Spero che questo ti aiuti.


0

Copia /usr/local/opt/mysql/support-files/my-default.cnf come /etc/my.cnf o /etc/mysql/my.cnf e riavvia mysql.


0

Per me in versione sierra

copia la configurazione predefinita su:

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

per

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


0

Nel mio caso, il file non esisteva. In MySQL Workbench sono andato su OPTIONS FILE e ho trovato alcuni valori predefiniti. Ho fatto clic su Applica. Ha chiesto il permesso. Ha quindi creato il file my.cnf in / etc. Tuttavia, è molto importante tenere presente che la prima volta che si fa clic su "Applica", non si apportano modifiche alla configurazione predefinita. Una volta creato il file, è possibile apportare le modifiche che verranno applicate quando si fa clic su "applica". Altrimenti non ti verrà mostrato il pulsante Applica quando apporti modifiche.


Ho un file di opzioni su /etc/mysql/my.cnfma MySQL Workbench non ne è a conoscenza. Invece, si lamenta che il file di configurazione con un percorso vuoto non può essere trovato e quindi offre di creare un nuovo file.
Alan Snyder,

0

Dopo la versione 5.7.18 di MySQL, non fornisce il file di configurazione predefinito nella directory support-files. Quindi puoi creare manualmente il file my.cnf nella posizione in cui leggerà MySQL, come /etc/mysql/my.cnf, e aggiungere la configurazione che desideri aggiungere nel file.


0

rLe opzioni predefinite vengono lette dai seguenti file nell'ordine indicato: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf


0

Sto eseguendo MacOS Mojave (10.14.6) e per far riconoscere a MySQL il mio file di configurazione, ho dovuto inserirlo in /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf. Inoltre ho un link simbolico che punta ad esso da /usr/local/@mysql/etc/my.cnf.

Stavo cercando di disattivare sql_mode = only_full_group_by e impostare quell'opzione nel file di configurazione era l'unico modo in cui riuscivo a far sì che l'impostazione persistesse tra le sessioni. I contenuti del file di configurazione sono:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Sto usando l'installazione nativa di MySQL, non la configurazione di Homebrew.


0

Per mysql 8.0.19, ho finalmente trovato my.cnf qui: /usr/local/opt/mysql/.bottle/etc L'ho copiato in / usr / local / opt / mysql / e l'ho modificato. Quindi riavvio il servizio mysql, funziona.

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.