Speicherort der Datei my.cnf unter macOS


184

Ich versuche, diesem Tutorial zu folgen , um den Remotezugriff auf MySQL zu ermöglichen. Das Problem ist, wo sollte sich die my.cnfDatei befinden? Ich verwende Mac OS X Lion.


Ich denke, das gehört zu serverfault.com. Aber trotzdem willkommen bei SO!
Artefakt2

Antworten:


251

Dieser Thread im MySQL-Forum sagt:

Standardmäßig verwendet die OS X-Installation keine my.cnf und MySQL verwendet nur die Standardwerte. Um Ihre eigene my.cnf einzurichten, können Sie einfach eine Datei direkt in / etc. Erstellen.

OS X bietet Beispielkonfigurationsdateien unter /usr/local/mysql/support-files/.

Und wenn Sie sie dort nicht finden können, kann MySQLWorkbench sie für Sie erstellen, indem Sie:

  1. Verbindung öffnen
  2. Wählen Sie im Menü unter "INSTANZ" die Option "Optionsdatei" aus.
  3. MySQLWorkbench sucht nach my.cnf und erstellt es für Sie, wenn es nicht gefunden werden kann

14
Mindestens das aktuelle MySQL - Paket für Mac OS X (mysql-5.6.17-osx10.7-x86_64 zum Zeitpunkt des Schreibens dieses Artikels) hat in der Tat schaffen und eine my.cnf verwenden. Es befindet sich unter /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Jpsy

102
Vielleicht möchten Sie sicherstellen, dass MySQL tatsächlich in die my.cnfDatei mysql --verbose --help | grep my.cnf
geladen wird, die

3
Unter Mac OS Sierra war es noch nicht eingerichtet. Ich musste /usr/local/mysql/support-files/my-default.cnf im selben Verzeichnis nach my.cnf kopieren. Beachten Sie, dass mysql mit dem Paket verknüpft ist, in meinem Fall mysql-5.7.17-macos10.12-x86_64.
Christia

17
Habe gerade eine Neuinstallation von MySQL 5.7.19 unter Mac OS 10.12 mit der .dmg von dev.mysql.com durchgeführt. Es gibt keine my.cnf an einer der Stellen, an denen mysql --help sagt, dass es aussieht. Und es gibt keine my-default.cnf in / usr / local / mysql / support-files / oder irgendwo anders, wo ich gefunden habe. Es stellt sich heraus, dass "ab MySQL 5.7.18 my-default.cnf nicht mehr in Distributionspaketen enthalten ist oder von diesen installiert wird" .
Chris Bartley

2
Diese Antwort ist alt und hängt davon ab, mit welchem ​​Installationsprogramm Sie MySQL installiert haben. Homebrew setzt es an eine Stelle, der dmg-Installer setzt es an eine andere Stelle
slashdottir

77

Im Falle von Mac OS X Maverick befindet sich MySQL unter Homebrew unter /usr/local/opt/mysql/my.cnf


6
Das ist /usr/local/Cellar/yourMySqlVersion/my.cnf
m02ph3u5

/ usr / local / opt / mariadb / VERSIONNUMBER / in meinem Fall ist MariaDB installiert
Steven Lizarazo

8
Meins ist in /usr/local/etc/my.cnf
Steve Tauber

1
Meins war /usr/local/mysql/etc. Ich bin auf High Sierra, aber es wurde ein paar Versionen zurück installiert.
Joshua Pinter

Sie sind ein Lebensretter
Ishan Srivastava

56

Auf Unix- und Unix-ähnlichen Systemen lesen MySQL / MariaDB-Programme im Allgemeinen Konfigurations- / Startdateien an den folgenden Speicherorten (in der angegebenen Reihenfolge):

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

    SYSCONFDIRstellt das Verzeichnis dar, das mit der SYSCONFDIROption angegeben wurde, CMakewann MySQL erstellt wurde. Standardmäßig ist dies das Verzeichnis etc, das sich unter dem kompilierten Installationsverzeichnis befindet.

  • $MYSQL_HOME/my.cnf - Serverspezifisch (nur Server)

    MYSQL_HOMEist eine Umgebungsvariable, die den Pfad zu dem Verzeichnis enthält, in dem sich die serverspezifische my.cnfDatei befindet. Wenn dies MYSQL_HOMEnicht festgelegt ist und Sie den Server mit dem mysqld_safeProgramm starten , wird mysqld_safees auf BASEDIRdas MySQL-Basisinstallationsverzeichnis festgelegt.

  • Datei angegeben mit --defaults-extra-file=pathfalls vorhanden

  • ~/.my.cnf - Benutzerspezifisch
  • ~/.mylogin.cnf - Benutzerspezifisch (nur Kunden)

Quelle: Verwenden von Optionsdateien .

Hinweis: Auf Unix-Plattformen ignoriert MySQL Konfigurationsdateien, die weltweit beschreibbar sind. Dies ist als Sicherheitsmaßnahme beabsichtigt.


Zusätzlich gibt es auf dem Mac eine einfache Möglichkeit, dies zu überprüfen.

  1. Lauf: sudo fs_usage | grep my.cnf

    Dadurch werden alle Dateisystemaktivitäten in Echtzeit in Bezug auf diese Datei gemeldet.

  2. Starten Sie in einem anderen Terminal MySQL / MariaDB neu, z

    brew services restart mysql

    oder:

    brew services restart mariadb
  3. Auf dem Terminal mit fs_usagesollte der richtige Ort angezeigt werden, z

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

    Wenn die Datei nicht vorhanden ist, erstellen Sie eine.


6
Vielen Dank! Die sudo fs_usage | grep my.cnfMethode ist sehr effizient. Ich finde diese Datei auf Ordner: /usr/local/etc/my.cnf
Gary

2
Große Methode, aber ich einige Ergebnisse erhalten dort: private/etc/my.cnf, /usr/local/etc/my.cnf, /usr/local/Cellar/mysql/<myVersion>/my.cnf, ~.my.cnfmit my_print_defin der rechten Spalte. Dann nach einer Weile ist es nur /usr/local/etc/my.cnfmit meinem Terminal in der Spalte ganz rechts. Aber all diese my.cnfDateien existieren nicht!
Andru

@Andru Wenn keiner von ihnen existiert, erstelle einen neuen.
Kenorb

1
Ihre letzten Anweisungen zu sudo fs_usage | grep my.cnf war das einzige, was mir auf dieser Seite geholfen hat, da mysqld aus einem unbekannten Grund nicht von den über mysql aufgelisteten Standardspeicherorten geladen wurde -?
Redbirdo

1
Dieser Befehl sudo fs_usage | grep my.cnf hat mir den Tag gerettet, vielen Dank.
Shashikant Soni

33

Ich weiß nicht, welche Version von MySQL Sie verwenden, aber hier sind mögliche Speicherorte der my.cnf-Datei für Version 5.5 (von hier übernommen ) unter 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(die mit angegebene Datei --defaults-extra-file=path, falls vorhanden)
  6. ~/.my.cnf


21

Wenn Sie macOS Sierra verwenden und die Datei nicht vorhanden ist, führen Sie sie aus

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

Um die möglichen Speicherorte und die Lade- / Lesesequenz von my.cnf für mysql anzuzeigen, erstellen Sie die Datei my.cnf in einem der vorgeschlagenen Verzeichnisse und fügen Sie die folgende Zeile hinzu

[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

Sie können sudo touch /{preferred-path}/my.cnfdie Datei dann bearbeiten, um den SQL-Modus hinzuzufügen

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

Dann starte mysql neu, voilaah du bist gut zu gehen. fröhliche Codierung


13

Das aktuelle MySQL-Paket für Mac OS X Mavericks (mysql-5.6.17-osx10.7-x86_64 zum Zeitpunkt dieses Schreibens) erstellt während der Installation automatisch eine my.cnf.

Es befindet sich unter /usr/local/mysql-5.6.17-osx10.7-x86_64/my.cnf
Passen Sie Ihren Pfad an Ihre Version an.


12

Also hat keines dieser Dinge für mich funktioniert. Ich verwende die aktuelle dmg-Installation des MySQL-Community-Servers. ps zeigt, dass alle kritischen Parameter, die normalerweise in my.cnf enthalten sind, in der Befehlszeile übergeben werden, und ich konnte nicht herausfinden, woher das kam. Nachdem ich meine Box im Volltext durchsucht hatte, fand ich sie in:

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

Sie können sie also entweder dort ändern oder herausnehmen, damit sie tatsächlich diejenigen respektieren, die Sie in Ihrer my.cnf haben, wo immer Sie sich entschieden haben, sie zu platzieren.

Genießen!

Beispiel für die in dieser Datei gefundenen Dateiinformationen:

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

großartig! du hast meinen Tag gerettet.
Jenny

Ich hatte den gleichen Fall, aber ich musste auch meine.cnf-Datei hinzufügen/etc/my.cnf
Eduard Mukans

11

Sie können ein Terminal öffnen und eingeben locate my.cnf


Es tut mir leid, dass ich nicht spezifisch genug bin. Anscheinend muss ich 'my-large.cnf' in einen Ordner kopieren und ihn in 'my.cnf' umbenennen. Aber ich weiß nicht wohin ..
Nicole

1
Außerdem benötigen Sie eine ausgefüllte Lokalisierungsdatenbank. auf mac osx: sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.locate.plist
arcseldon

10

In MySQL 5.6.22, das ich von Homebrew installiert habe, lautet der Pfad von my.cnf

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

10

macOs sierra 10.12.6 mysql version: 5.7.18_1 Ich laufe führe my.cnf aus und der Pfad ist

/usr/local/etc/my.cnf

hoffe es hilft.


Erwägen Sie, Ihrem Asnwer eine Erklärung hinzuzufügen
Inder

@ charles.cc.hsu: Verwenden Sie den Befehl locate my.cnfauf Ihrem Terminal. Was ist das Ergebnis?
Aginanjar

6

Sie können Ihre Datei in einem beliebigen Verzeichnis erstellen. Nach der Erstellung können Sie den Pfad zur MySQL-Konfiguration "mitteilen":

Geben Sie hier die Bildbeschreibung ein


6

Sie können die Datei überprüfen

/usr/local/bin/mysql.serverund sehen, von wo my.confgelesen wird.

Normalerweise ist es von /etc/my.cnfoder ~/my.cnfoder~/.my.cnf


Korrektur : ~/.my.cnf. Fügen Sie vor dem Dateinamen einen Punkt ein.
undefiniert

5

Erstellen Sie für MAMP 3.5 Mac El Capitan eine separate leere Konfigurationsdatei und schreiben Sie Ihre zusätzlichen Einstellungen für MySQL

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

Und so hinzufügen

[mysqld]
max_allowed_packet = 256M

5

Öffnen Sie das Terminal und verwenden Sie den folgenden Befehl:

sudo find / -name my.cnf

4

LESEN SIE DIE DOKUMENTE!

Die MySQL-Dokumente, für welche Version Sie verwenden, helfen. Es wird normalerweise als Options Fileoder beschrieben MySQL Config File.
Die Dokumente enthalten den Speicherort dieser Dateien in der Dokumentation sowie weitere VITALInformationen wie den Speicherort und kleine Beispiele dafür, wie die Konfigurationsdatei aussehen muss.

MySQL Version 8

MySQL Version 5.7

MySQL Version 5.6

MySQL Version 5.5

MySQL Version 5.6 Japanisch

Wichtige Notizen:

Auf Unix-Plattformen ignoriert MySQL Konfigurationsdateien, die weltweit beschreibbar sind.

Dies ist als Sicherheitsmaßnahme beabsichtigt.

Mit anderen Worten, wenn Sie die falschen Berechtigungen für Ihre Konfigurationsdatei festgelegt haben, wird diese NICHT geladen.

Beispiel für die Ersteinrichtungsberechtigung einer der Konfigurationsdateien:

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

Hinweis:

Es ist möglich, !includeAnweisungen in Optionsdateien zu verwenden, um andere Optionsdateien und einzuschließen!includedir bestimmte Verzeichnisse nach Optionsdateien zu durchsuchen.

... MySQL übernimmt keine Garantie für die Reihenfolge, in der Optionsdateien im Verzeichnis gelesen werden ...

Alle Dateien, die unter Unix-Betriebssystemen mithilfe der Anweisung! Inclendedir gefunden und eingeschlossen werden sollen, müssen Dateinamen haben, die auf enden .cnf. Unter Windows sucht diese Anweisung nach Dateien mit der Erweiterung .inioder .cnf.

Beispiele, wie Sie Ihren Speicherort Ihrer Konfigurations- oder Protokolldateien finden können ect.:

SQL

Dadurch wird die Konfigurationsdatei nicht angezeigt, Sie können jedoch Ihre Installationsdateien / -ordner leichter finden.

MySQL Version 5.7 & 8+

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

MySQL Version <= 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

Über dem Befehl Gutschrift an: Erwin Mayer von 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

ODER

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

Beispieldatei

Sollten Sie ein detailliertes Referenzbeispiel benötigen 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

Keine Zugehörigkeit zu den URLs

Mein System:

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 "Standardoptionen" -A 1. das hat geholfen.
Wandermonk

3

Ich verwende MacOS Catalina (10.15.3) und finde my.cnfin /usr/local/etc.


2

Ich habe in macOS Sierra eingecheckt, das Homebrew installiert MySql 5.7.12

Die Support-Dateien befinden sich unter

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

Kopieren Sie einfach my-default.cnfals /etc/my.cnfoder /etc/mysql/my.cnfund die Konfiguration wird beim Neustart übernommen.


4
Ich habe gerade 5.7.18 am 12.12.4 über Homebrew installiert und sie sind nicht da.
norman_h

2

macOS High Sierra Version 10.13.6

mysql Ver 14.14 Distrib 5.7.22 für osx10.13 (x86_64) unter Verwendung des EditLine-Wrappers Copyright (c) 2000, 2018, Oracle und / oder seine Tochterunternehmen. Alle Rechte vorbehalten

Standardoptionen werden in der angegebenen Reihenfolge aus den folgenden Dateien gelesen:

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


1

Ich verwende MySQL Version 5.7.17 in MacOS High Sierra Version 10.13.3 und habe die MySQL-Konfigurationsdatei hier gefunden.

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

Vielen Dank für den Tipp zum Auffinden der Standardkonfigurationsdatei. Beachten Sie, dass dies nur eine Vorlagendatei ist. Sie sollten diese also an einen Ort kopieren, an mysql --verbose --help | grep my.cnfdem sie abgeholt wird, wie folgt: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

es sollte in der Regel unter sein , /usr/local/etcauf dem Mac , wenn Sie es nicht finden Sie erstellen können


0

Für Mac hat es für mich funktioniert, eine .my.cnf-Datei in meinem ~ Pfad zu erstellen. Hoffe das hilft.


0

Kopieren Sie /usr/local/opt/mysql/support-files/my-default.cnf als /etc/my.cnf oder /etc/mysql/my.cnf und starten Sie mysql neu.


0

Für mich in Sierra Version

Kopieren Sie die Standardkonfiguration unter:

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

zu

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


0

In meinem Fall existierte die Datei nicht. In MySQL Workbench ging ich zu OPTIONS FILE und fand einige Standardwerte. Ich habe auf Übernehmen geklickt. Es bat um Erlaubnis. Anschließend wurde die Datei my.cnf unter / etc erstellt. Es ist jedoch sehr wichtig zu beachten, dass Sie beim ersten Klicken auf "Übernehmen" keine Änderungen an der Standardkonfiguration vornehmen. Sobald die Datei erstellt wurde, können Sie Änderungen vornehmen, die angewendet werden, wenn Sie auf "Übernehmen" klicken. Andernfalls wird die Schaltfläche "Anwenden" nicht angezeigt, wenn Sie Änderungen vornehmen.


Ich habe eine Optionsdatei unter, /etc/mysql/my.cnfaber MySQL Workbench ist sich dessen nicht bewusst. Stattdessen wird beanstandet, dass die Konfigurationsdatei mit einem leeren Pfad nicht gefunden werden kann, und es wird angeboten, eine neue Datei zu erstellen.
Alan Snyder

0

Nach der Version 5.7.18 von MySQL wird die Standardkonfigurationsdatei nicht im Verzeichnis support-files bereitgestellt. Sie können also die Datei my.cnf manuell an dem Speicherort erstellen, an dem MySQL liest, z. B. /etc/mysql/my.cnf, und die Konfiguration hinzufügen, die Sie der Datei hinzufügen möchten.


0

Die Standardoptionen werden in der angegebenen Reihenfolge aus den folgenden Dateien gelesen: /etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~ / .my.cnf


0

Ich verwende MacOS Mojave (10.14.6) und damit MySQL meine Konfigurationsdatei erkennt, musste ich sie in /usr/local/mysql-5.7.26-macos10.14-x86_64/etc/my.cnf ablegen. Außerdem habe ich einen symbolischen Link von /usr/local/@mysql/etc/my.cnf, der darauf verweist.

Ich habe versucht, sql_mode = only_full_group_by zu deaktivieren, und das Festlegen dieser Option in der Konfigurationsdatei war die einzige Möglichkeit, die Einstellung über Sitzungen hinweg beizubehalten. Der Inhalt der Konfigurationsdatei ist:

[mysqld]
sql_mode=NO_ENGINE_SUBSTITUTION

Ich verwende die native Installation von MySQL, nicht das Homebrew-Setup.


0

Für MySQL 8.0.19 habe ich die my.cnf endlich hier gefunden: /usr/local/opt/mysql/.bottle/etc Ich habe sie nach / usr / local / opt / mysql / kopiert und geändert. Dann starte ich den MySQL-Dienst neu, es funktioniert.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.