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_name
loose-
.
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
für Zeilen, die die Variablen
var_name
=value
key_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.