Die meisten MySQL-Programme können Startoptionen aus Optionsdateien (die manchmal auch Konfigurationsdateien genannt werden) auslesen. Optionsdateien stellen eine praktische Möglichkeit dar, häufig verwendete Optionen anzugeben, damit sie nicht mehr bei jeder Ausführung eines Programms explizit eingegeben werden müssen.
        Um zu ermitteln, ob ein Programm Optionsdateien ausliest, rufen
        Sie es mit der Option --help auf
        (--verbose und --help bei
        mysqld). Wenn das Programm Optionsdateien
        ausliest, zeigt die Hilfemeldung an, nach welchen Dateien sie
        sucht und welche Optionsabschnitte (Gruppen) sie erkennt.
      
Hinweis: Optionsdateien, die für MySQL Cluster-Dateien verwendet werden, werden in Abschnitt 16.4, „MySQL Cluster: Konfiguration“, behandelt.
Unter Windows lesen MySQL-Programme Startoptionen aus den folgenden Dateien aus:
| Dateiname | Zweck | 
|  | globale Optionen | 
| C:\my.cnf | globale Optionen | 
|  | globale Optionen | 
| defaults-extra-file | die ggf. mit --defaults-extra-file=angegebene Datei | 
        WINDIR steht dabei für die Position
        Ihres Windows-Verzeichnisses. Dies ist in der Regel
        C:\WINDOWS oder
        C:\WINNT. Sie können die exakte Position
        der Umgebungsvariablen WINDIR entnehmen.
        Hierzu geben Sie den folgenden Befehl ein:
      
C:\> echo %WINDIR%
        INSTALLDIR steht für das
        MySQL-Installationsverzeichnis. Dies ist normalerweise
        C:\, wobei
        PROGRAMDIR\MySQL\MySQL
        5.1 ServerPROGRAMDIR das Programmverzeichnis
        (bei deutschsprachigen Windows-Versionen üblicherweise
        Programme) ist, wenn MySQL 5.1
        mithilfe der Installations- und Konfigurations-Assistenten
        eingerichtet wurde. Siehe auch
        Abschnitt 2.3.5.14, „Speicherort der Datei my.ini“.
      
Unter Unix lesen MySQL-Programme Startoptionen aus den folgenden Dateien aus:
| Dateiname | Zweck | 
| /etc/my.cnf | globale Optionen | 
| $MYSQL_HOME/my.cnf | serverspezifische Optionen | 
| defaults-extra-file | die ggf. mit --defaults-extra-file=angegebene Datei | 
| ~/.my.cnf | benutzerspezifische Optionen | 
        MYSQL_HOME ist eine Umgebungsvariable, die
        den Pfad angibt, in dem die serverspezifische Datei
        my.cnf abgelegt ist.
      
        Wenn MYSQL_HOME nicht eingestellt ist und Sie
        den Server mit dem Programm mysqld_safe
        starten, versucht mysqld_safe,
        MYSQL_HOME wie folgt einzustellen:
      
            Dabei stehen BASEDIR und
            DATADIR für die Pfadnamen zum
            MySQL-Basis- bzw. Datenverzeichnis.
          
            Ist eine Datei my.cnf in
            DATADIR, aber nicht in
            BASEDIR vorhanden, so setzt
            mysqld_safe MYSQL_HOME
            auf DATADIR.
          
            Andernfalls – also wenn MYSQL_HOME
            nicht gesetzt und keine Datei my.cnf in
            DATADIR vorhanden ist – setzt
            mysqld_safe MYSQL_HOME
            auf BASEDIR.
          
        Normalerweise ist DATADIR
        /usr/local/mysql/data in einer
        Binärinstallation bzw. /usr/local/var in
        einer Quellinstallation. Beachten Sie, dass dies jeweils die
        Position des Datenverzeichnisses ist, die zum Zeitpunkt der
        Konfiguration angegeben wurde, und nicht die mit der Option
        --datadir beim Start von
        mysqld spezifizierte Position. Die Verwendung
        von --datadir während der Laufzeit hat keinen
        Einfluss darauf, wo der Server nach Optionsdateien sucht, denn
        die Suche erfolgt vor der Verarbeitung ggf. angegebener
        Optionen.
      
MySQL sucht in der gerade beschriebenen Reihenfolge nach Optionsdateien und liest diese aus, sofern sie vorhanden sind. Ist eine Optionsdatei, die Sie verwenden wollen, nicht vorhanden, dann können Sie sie mit einem Texteditor erstellen.
        Werden mehrere Instanzen einer gegebenen Option gefunden, dann
        hat die jeweils zuletzt gefundene Instanz immer Vorrang. Es gibt
        allerdings eine Ausnahme: Bei mysqld wird aus
        Sicherheitsgründen immer die erste Instanz
        der Option --user verarbeitet, damit verhindert
        wird, dass eine Benutzerangabe in einer Optionsdatei über die
        Befehlszeile außer Kraft gesetzt werden kann.
      
Hinweis: Auf Unix-Plattformen ignoriert MySQL Konfigurationsdateien, die für alle schreibbar („world-writable“) sind. Dies ist beabsichtigt und dient der Erhöhung der Sicherheit.
        Jede Langformoption, die beim Start eines MySQL-Programms über
        die Befehlszeile angegeben wird, kann ebenso gut auch in einer
        Optionsdatei spezifiziert werden. Um eine Liste der für ein
        Programm verfügbaren Optionen zu erhalten, führen Sie es mit
        der Option --help aus.
      
        Die Syntax zur Angabe von Optionen in einer Optionsdatei ähnelt
        der Befehlszeilensyntax, nur können Sie die beiden Bindestriche
        am Anfang weglassen. So werden etwa die Befehlszeilenoptionen
        --quick oder --host=localhost
        in einer Optionsdatei als quick bzw.
        host=localhost angegeben. Um eine Option des
        Typs
        --loose- in
        einer Optionsdatei anzugeben, schreiben Sie sie als
        opt_nameloose-.
      opt_name
Leerzeilen in Optionsdateien werden ignoriert. Nichtleere Zeilen können die folgenden Formen annehmen:
            #,
            comment;
          comment
            Kommentarzeilen starten mit
            ‘#’ oder
            ‘;’. Ein Kommentar des Typs
            ‘#’ kann auch in der Mitte
            einer Zeile verwendet werden.
          
            [
          group]
            group ist der Name des Programms
            oder Abschnitts, für den Sie die Optionen einstellen
            wollen. Alle auf eine Abschnittszeile folgenden Zeilen mit
            Optionseinstellungen gelten für den betreffenden Abschnitt,
            bis eine andere Abschnittszeile angegeben oder das Ende der
            Optionsdatei erreicht wird.
          
            opt_name
            Entspricht
            -- auf
            der Befehlszeile.
          opt_name
            opt_name=value
            Entspricht
            --
            auf der Befehlszeile. In einer Optionsdatei können Sie –
            anders als auf der Befehlszeile – Leerzeichen um das
            Gleichheitszeichen ‘opt_name=value=’
            setzen. Sie können den Wert in einzelne oder doppelte
            Anführungszeichen setzen, was nützlich bei Werten ist, die
            das Kommentarzeichen ‘#’ oder
            Whitespace enthalten.
          
        Bei Optionen, die numerische Werte annehmen, kann dieser mit den
        Suffixen K, M oder
        G (in Groß- oder Kleinschreibung) angegeben
        werden, um einen Multiplikator von 1024,
        10242 oder
        10243 anzuzeigen. Der folgende Befehl
        beispielsweise weist mysqladmin an, 1024
        Ping-Befehle im Abstand von jeweils zehn Sekunden an den Server
        zu senden:
      
mysql> mysqladmin --count=1K --sleep=10 ping
        Bei Optionsnamen oder -werten werden Leerzeichen am Anfang oder
        Ende automatisch gelöscht. Sie können die Escape-Sequenzen
        ‘\b’,
        ‘\t’,
        ‘\n’,
        ‘\r’,
        ‘\\’ und
        ‘\s’ in Optionswerten zur
        Darstellung von Rückschritt-, Tabulator-, Zeilenwechsel-,
        Absatzschaltungs- und Leerzeichen verwenden.
      
        Da die Escape-Sequenz ‘\\’ genau
        einen Backslash darstellt, müssen Sie jeden Backslash als
        ‘\\’ schreiben. Alternativ geben
        Sie den Wert unter Einsatz von
        ‘/’ statt
        ‘\’ als Trennzeichen in Pfadnamen
        an.
      
        Wenn der Name eines Optionsabschnitts mit dem eines Programms
        identisch ist, gelten die Optionen in diesem Abschnitt speziell
        für dieses Programm. So betreffen beispielsweise die Abschnitte
        [mysqld] und [mysql] den
        Server mysqld bzw. das Clientprogramm
        mysql.
      
        Der Optionsabschnitt [client] wird von allen
        Clientprogrammen (aber nicht von
        mysqld) ausgelesen. Auf diese Weise können
        Sie Optionen angeben, die für alle Clients gelten.
        Beispielsweise ist [client] der optimale
        Abschnitt zur Angabe des Passworts, mit dem Sie die
        Serververbindung herstellen. (Hierbei müssen Sie natürlich
        sicherstellen, dass nur Sie die Optionsdatei lesen und in sie
        schreiben können, damit Dritte Ihr Passwort nicht ermitteln
        können.) Beachten Sie, dass Sie eine Option nicht im Abschnitt
        [client] ablegen dürfen, wenn nicht
        gewährleistet ist, dass alle von Ihnen
        verwendeten Clientprogramme sie erkennen. Wenn Sie Programme
        starten, die eine bestimmte Option nicht verstehen, dann zeigen
        diese eine Fehlermeldung an und werden nachfolgend beendet.
      
Eine typische Datei mit globalen Optionen sieht so aus:
[client] port=3306 socket=/tmp/mysql.sock [mysqld] port=3306 socket=/tmp/mysql.sock key_buffer_size=16M max_allowed_packet=8M [mysqldump] quick
        Diese Optionsdatei verwendet die Syntax
        var_name=valuekey_buffer_size und
        max_allowed_packet einstellen.
      
Eine typische Datei mit Benutzeroptionen sieht so aus:
[client] # The following password will be sent to all standard MySQL clients password="my_password" [mysql] no-auto-rehash connect_timeout=2 [mysqlhotcopy] interactive-timeout
        Wenn Sie Optionsabschnitte erstellen wollen, die nur von
        mysqld-Servern einer bestimmten
        MySQL-Release-Serie ausgelesen werden sollen, dann sollten Sie
        Abschnittsnamen in der Form
        [mysqld-5.0],
        [mysqld-5.1] usw. verwenden. Der
        folgende Abschnitt gibt an, dass die Option
        --new nur von MySQL Servern der Versionsnummern
        5.1.x verwendet werden soll:
      
[mysqld-5.1] new
        Seit MySQL 5.0.4 ist es möglich,
        !include-Direktiven in Optionsdateien zu
        verwenden, um andere Optionsdateien zu integrieren. Ebenfalls
        nutzbar ist !includedir; hiermit wird das
        Durchsuchen bestimmter Verzeichnisse nach Optionsdateien
        veranlasst. Um beispielsweise die Datei
        /home/mydir/myopt.cnf zu integrieren,
        können Sie die folgende Direktive verwenden:
      
!include /home/me/myopt.cnf
        Wenn Sie das Verzeichnis /home/mydir
        durchsuchen und die darin vorhandenen Optionsdateien auslesen
        wollen, würde die Direktive wie folgt aussehen:
      
!includedir /home/mydir
        Hinweis: Zurzeit
        müssen alle Dateien, die auf
        Unix-Betriebssystemen mithilfe der Direktive
        !includedir gesucht und integriert werden
        sollen, Dateinamen mit der Erweiterung .cnf
        aufweisen. Unter Windows prüft die Direktive auf Dateien mit
        den Erweiterungen .ini oder
        .cnf.
      
        Beachten Sie, dass Optionen, die aus integrierten Dateien
        ausgelesen werden, im Kontext des aktuellen Optionsabschnitts
        angewendet werden. Nehmen wir einmal an, Sie würden die
        folgenden Zeilen in my.cnf ablegen:
      
[mysqld] !include /home/mydir/myopt.cnf
        In diesem Fall wird die Datei myopt.cnf nur
        für den Server verarbeitet; die Direktive
        !include wird von allen Clientanwendungen
        ignoriert. Würden Sie jedoch wie folgt formulieren, dann würde
        das Verzeichnis /home/mydir/my-dump-options
        nur von mysqldump auf Optionsdateien
        geprüft, nicht jedoch vom Server oder anderen
        Clientanwendungen:
      
[mysqldump] !includedir /home/mydir/my-dump-options
        Wenn Sie eine Quelldistribution verwenden, finden Sie
        Beispieloptionsdateien mit dem Namen
        my- im
        Verzeichnis xxxx.cnfsupport-files. Im Falle einer
        Binärdistribution schauen Sie im Verzeichnis
        support-files nach, welches sich im
        MySQL-Installationsverzeichnis befindet. Unter Windows sind die
        Beispieloptionsdateien unter Umständen im
        MySQL-Installationsverzeichnis selbst abgelegt (siehe auch
        weiter oben in diesem Abschnitt oder in
        Kapitel 2, Installation von MySQL, wenn Sie nicht wissen, wo sich
        dieses befindet). Derzeit sind Beispieloptionsdateien für
        kleine, mittelgroße, große und sehr große Systeme vorhanden.
        Um mit einer dieser Dateien zu experimentieren, kopieren Sie sie
        unter Windows als C:\my.cnf bzw. unter Unix
        als .my.cnf in Ihr Homeverzeichnis.
      
        Hinweis: Unter Windows wird die
        Dateierweiterung .cnf unter Umständen
        nicht angezeigt.
      
        Alle MySQL-Programme, die Optionsdateien unterstützen,
        verarbeiten die folgenden Optionen. Diese betreffen den Umgang
        mit Optionsdateien, müssen also über die Befehlszeile (und
        nicht in einer Optionsdatei) angegeben werden. Damit sie
        einwandfrei funktionieren, müssen die Optionen jeweils
        unmittelbar auf den Befehlsnamen folgen. Ausgenommen ist
        --print-defaults, das unmittelbar auf
        --defaults-file oder
        --defaults-extra-file angegeben werden muss.
      
            --no-defaults
          
Optionsdateien nicht auslesen.
            --print-defaults
          
Programmnamen und alle aus den Optionsdateien ausgelesenen Optionen anzeigen.
            --defaults-file=
          file_name
            Nur die angegebene Optionsdatei verwenden. Dabei ist
            file_name der vollständige
            Pfadname zur betreffenden Datei.
          
            --defaults-extra-file=
          file_name
            Diese Optionsdatei nach der globalen Optionsdatei, aber
            (unter Unix) vor der Benutzeroptionsdatei auslesen. Dabei
            ist file_name der vollständige
            Pfadname zur betreffenden Datei.
          
        In Shell-Skripten können Sie mit dem Programm
        my_print_defaults die Optionsdateien
        durchsuchen und überprüfen, welche Optionen für ein gegebenes
        Programm verwendet würden. Das folgende Beispiel zeigt eine
        Ausgabe, die my_print_defaults erzeugen
        könnte, wenn es die in den Abschnitten
        [client] und [mysql]
        gefundenen Optionen anzeigen sollte:
      
shell> my_print_defaults client mysql
--port=3306
--socket=/tmp/mysql.sock
--no-auto-rehash
Hinweis für Entwickler: Die Verarbeitung von Optionsdateien wird in der C-Clientbibliothek implementiert, indem einfach alle Optionen in dem oder den entsprechenden Abschnitten vor den Befehlszeilenargumenten ausgelesen werden. Dies funktioniert bei Programmen, die das letzte Auftreten einer mehrfach angegebenen Option verwenden, einwandfrei. Wenn Sie jedoch ein C- oder C++-Programm haben, das zwar mehrfach angegebene Optionen verarbeitet, aber die Optionsdateien nicht ausliest, müssen Sie lediglich zwei Zeilen hinzufügen, um diese Funktionalität zu implementieren. Studieren Sie den Quellcode eines beliebigen MySQL-Standardclients, um zu erfahren, wie es gemacht wird.
Mehrere andere Sprachschnittstellen zu MySQL basieren auf der C-Clientbibliothek, und eine davon ermöglicht den Zugriff auf die Inhalte von Optionsdateien. Dies betrifft Perl und Python. Details entnehmen Sie der Dokumentation Ihrer bevorzugten Schnittstelle.
Dies ist eine Übersetzung des MySQL-Referenzhandbuchs, das sich auf dev.mysql.com befindet. Das ursprüngliche Referenzhandbuch ist auf Englisch, und diese Übersetzung ist nicht notwendigerweise so aktuell wie die englische Ausgabe. Das vorliegende deutschsprachige Handbuch behandelt MySQL bis zur Version 5.1.

