Kapitel 4. Benutzung von MySQL-Programmen

Inhaltsverzeichnis

4.1. Überblick über MySQL-Programme
4.2. Aufruf von MySQL-Programmen
4.3. Angabe von Programmoptionen
4.3.1. Befehlszeilenoptionen für mysqld
4.3.2. my.cnf-Optionsdateien
4.3.3. Verwendung von Umgebungsvariablen für die Angabe von Optionen
4.3.4. Verwendung von Optionen zum Setzen von Programmvariablen

Dieses Kapitel vermittelt einen kurzen Überblick über die Befehlszeilenprogramme, die von MySQL AB angeboten werden, und beschreibt die allgemeine Syntax zur Angabe von Optionen bei der Ausführung dieser Programme. Die meisten Programme bieten zwar programmspezifische Optionen, aber die Optionssyntax ist bei allen Programmen ähnlich. Die nachfolgenden Kapitel enthalten detailliertere Beschreibungen einzelner Programme und der jeweiligen Optionen.

MySQL AB bietet auch drei grafikbasierte Clientprogramme zur Verwendung mit MySQL Server an:

Diese GUI-Programme haben jeweils eigene Handbücher, die unter http://dev.mysql.com/doc/ erhältlich sind.

4.1. Überblick über MySQL-Programme

MySQL AB bietet mehrere Programmtypen an:

  • Den MySQL Server und die Serverstartskripten:

    • mysqld ist der MySQL Server.

    • mysqld_safe, mysql.server und mysqld_multi sind Serverstartskripten.

    • mysql_install_db initialisiert das Datenverzeichnis und die Ausgangsdatenbanken.

    • Der MySQL Instance Manager überwacht und verwaltet MySQL Server-Instanzen.

    In Kapitel 5, Datenbankverwaltung, werden diese Programme eingehender behandelt.

  • Clientprogramme, die auf den Server zugreifen:

    • mysql ist ein Befehlszeilenclient zur Ausführung von SQL-Anweisungen im interaktiven Modus oder im Stapelbetrieb.

    • mysqladmin ist ein Administrationsclient.

    • mysqlcheck führt Wartungsarbeiten an den Tabellen aus.

    • mysqldump und mysqlhotcopy erstellen Datenbank-Backups.

    • mysqlimport importiert Datendateien.

    • mysqlshow zeigt Informationen zu Datenbanken und Tabellen an.

    In Kapitel 8, Client- und Hilfsprogramme, werden diese Programme eingehender behandelt.

  • Hilfsprogramme, die unabhängig vom Server laufen:

    • myisamchk führt Wartungsarbeiten an den Tabellen aus.

    • myisampack erzeugt komprimierte, schreibgeschützte Dateien.

    • mysqlbinlog ist ein Tool zur Verarbeitung binärer Logdateien.

    • perror zeigt Erläuterungen zu Fehlercodes an.

    Kapitel 5, Datenbankverwaltung, beschreibt myisamchk. Die übrigen Programme werden in Kapitel 8, Client- und Hilfsprogramme, erklärt.

Die meisten MySQL-Distributionen enthalten alle diese Programme abgesehen von denjenigen, die plattformspezifisch sind (dies gilt beispielsweise für die Serverstartskripten, die unter Windows nicht verwendet werden). Ausgenommen hiervon sind die RPM-Distributionen, denn sie sind spezialisierter: Es gibt ein RPM für den Server, ein anderes für Clientprogramme usw. Wenn Sie feststellen, dass Ihnen ein oder mehrere Programme fehlen, finden Sie in Kapitel 2, Installation von MySQL, Informationen zu Distributionstypen und deren Inhalten. Unter Umständen haben Sie eine Distribution, die nicht alle Programme enthält; Sie müssen dann möglicherweise noch andere Komponenten installieren.

4.2. Aufruf von MySQL-Programmen

Um ein MySQL-Programm über die Befehlszeile (d. h. von Ihrer Shell bzw. an der Eingabeaufforderung) aufzurufen, geben Sie den Programmnamen gefolgt von allen erforderlichen Optionen oder anderen Argumenten ein, mit denen Sie dem Programm mitteilen, was es tun soll. Die folgenden Befehle zeigen einige beispielhafte Programmaufrufe. „shell>“ stellt dabei die Eingabeaufforderung für Ihren Befehls-Interpreter dar, ist also nicht Bestandteil der Eingabe. Welche Eingabeaufforderung angezeigt wird, hängt vom verwendeten Befehls-Interpreter ab. Typische Eingabeaufforderungen sind $ bei sh oder bash, % bei csh oder tcsh und C:\> bei den Windows-Interpretern command.com oder cmd.exe.

shell> mysql -u root test
shell> mysqladmin extended-status variables
shell> mysqlshow --help
shell> mysqldump --user=root personnel

Argumente, die mit einem einzelnen oder doppelten Bindestrich (‘-’, ‘--’) beginnen, sind Optionsargumente. Optionen geben in der Regel die Art der Verbindung an, die ein Programm zum Server herstellen soll, oder betreffen den Betriebsmodus. Die Optionssyntax ist in Abschnitt 4.3, „Angabe von Programmoptionen“, beschrieben.

Nichtoptionsargumente (d. h. Argumente ohne führenden Bindestrich) übergeben zusätzliche Informationen an das Programm. So interpretiert etwa das Programm mysql das erste Nichtoptionsargument als Datenbanknamen; der Befehl mysql -u root test gibt also an, dass Sie die Datenbank test verwenden wollen.

Die nachfolgenden programmspezifischen Abschnitte geben auch an, welche Optionen das betreffende Programm versteht, und beschreiben die Bedeutung aller weiteren Nichtoptionsargumente.

Einige Optionen sind zahlreichen Programmen gemeinsam. Die häufigsten hiervon sind --host (oder -h), --user (oder -u) und --password (oder -p); sie alle dienen der Angabe von Verbindungsparametern. Angegeben werden auf diese Weise der Host, auf dem der MySQL Server ausgeführt wird, sowie der Benutzername und das Passwort Ihres MySQL-Kontos. Alle MySQL-Clientprogramme verstehen diese Optionen; sie gestatten Ihnen, festzulegen, mit welchem Server eine Verbindung hergestellt werden soll und welches Konto auf dem Server zu verwenden ist.

Sie werden möglicherweise feststellen, dass Sie beim Aufruf von MySQL-Programmen den Pfadnamen zum Verzeichnis bin angeben müssen, in dem sie installiert sind. Dies ist wahrscheinlich der Fall, wenn Sie beim Versuch, ein MySQL-Programm aus einem anderen als diesem Verzeichnis aufzurufen, die Fehlermeldung „Program not found“ erhalten. Um die Verwendung von MySQL praktischer zu gestalten, können Sie den Pfadnamen des Verzeichnisses bin zu Ihrer Umgebungsvariablen PATH hinzufügen. Danach können Sie ein Programm durch Eingabe des Programmnamens aufrufen und müssen den Pfadnamen nicht mehr angeben. Wenn Sie beispielsweise mysql in /usr/local/mysql/bin installiert haben, können Sie es nachfolgend über die Eingabe mysql; aufrufen; das Eingeben von /usr/local/mysql/bin/mysql ist dann nicht mehr notwendig.

Informationen zur Einstellung Ihrer Umgebungsvariable PATH finden Sie in der Dokumentation zu Ihrem Befehls-Interpreter. Die Syntax zur Einstellung von Umgebungsvariablen ist Interpreter-spezifisch.

4.3. Angabe von Programmoptionen

Es gibt mehrere Möglichkeiten, Optionen für MySQL-Programme anzugeben:

  • Sie listen die Optionen auf den Programmnamen folgend auf der Befehlszeile auf. Dies ist die meistverwendete Methode bei Optionen, die für eine bestimmte Art des Programmaufrufs verwendet werden.

  • Sie listen die Optionen in einer Optionsdatei auf, die das Programm beim Start ausliest. Dies bietet sich für Optionen an, die Sie bei jedem Programmstart verwenden wollen.

  • Sie listen die Optionen in Umgebungsvariablen auf. Auch diese Methode ist nützlich, wenn Sie bestimmte Optionen bei jeder Programmausführung verwenden wollen. In der Praxis werden für diesen Zweck allerdings meistens Optionsdateien verwendet. Abschnitt 5.13.2, „Mehrere MySQL-Server unter Unix laufen lassen“, beschreibt jedoch eine Situation, in der Umgebungsvariablen sehr hilfreich sein können. Dort wird eine praktische Methode erläutert, die solche Variablen zur Angabe der TCP/IP-Portnummer und der Unix-Socketdatei für Server- und Clientprogramme verwendet.

Bei der Ermittlung der angegebenen Optionen fragen MySQL-Programme zunächst die Umgebungsvariablen ab, lesen dann die Optionsdateien aus und überprüfen schließlich die Eingabe auf der Befehlszeile. Wird eine Option mehrfach angegeben, so hat das jeweils letzte Auftreten Vorrang. Das bedeutet, dass Angaben in Umgebungsvariablen die niedrigste und Befehlszeileneingaben die höchste Priorität genießen.

Sie können diese Art der Verarbeitung von Optionen durch MySQL-Programme nutzen, indem Sie Vorgabewerte in einer Optionsdatei angeben. Auf diese Weise müssen Sie sie nicht bei jeder Ausführung des Programms neu eingeben, können die Vorgabewerte bei Bedarf aber mithilfe von Optionseingaben auf der Befehlszeile außer Kraft setzen.

4.3.1. Befehlszeilenoptionen für mysqld

Auf der Befehlszeile angegebene Programmoptionen unterliegen den folgenden Regeln:

  • Optionen werden auf den Befehlsnamen folgend angegeben.

  • Ein Optionsargument beginnt abhängig davon, ob es sich um einen kurzen oder langen Optionsnamen handelt, mit einem oder zwei Bindestrichen. Für viele Optionen sind sowohl ein Kurz- als auch ein Langname vorhanden. Beispielsweise sind -? und --help die Kurz- und die Langform der Option, die ein MySQL-Programm anweist, eine Hilfemeldung anzuzeigen.

  • Bei Optionsnamen wird die Groß-/Kleinschreibung unterschieden. Das bedeutet, dass sowohl -v als auch -V zulässig sind und auch unterschiedliche Bedeutungen haben. (Es handelt sich hierbei um die Kurzformen der Optionen --verbose bzw. --version.)

  • Einige Optionen nehmen einen Wert entgegen, der auf den Optionsnamen folgt. So bezeichnet -h localhost bzw. --host=localhost den MySQL Server für ein Clientprogramm. Der Optionswert nennt dem Programm den Namen des Hosts, auf dem der MySQL Server ausgeführt wird.

  • Bei einer Option mit einem Langnamen, die einen Wert entgegennimmt, trennen Sie den Optionsnamen und den Wert durch das Zeichen ‘=’. Bei Verwendung einer Kurzform, die einen Wert entgegennimmt, kann dieser entweder direkt oder durch ein Leerzeichen getrennt auf den Optionsbuchstaben folgen: -hlocalhost und -h localhost sind gleichbedeutend. Eine Ausnahme dieser Regel ist die Option zur Angabe Ihres MySQL-Passworts. Diese Option kann in der Langform entweder als --password=pass_val oder als --password angegeben werden. Im zweiten Fall (in dem kein Passwort übergeben wird) fordert das Programm Sie danach zur Eingabe des Passworts auf. Die Passwortoption kann auch in Kurzform als -ppass_val oder als -p angegeben werden. Allerdings muss die Eingabe des Passwortwerts bei der Kurzform unmittelbar auf den Optionsbuchstaben folgend, d. h. ohne trennendes Leerzeichen, erfolgen. Der Grund hierfür ist, dass, wenn ein Leerzeichen auf den Optionsbuchstaben folgt, das Programm keine Möglichkeit hat, festzustellen, ob das nachfolgende Argument der Passwortwert oder ein anderes Argument sein soll. Hieraus ergibt sich, dass die folgenden beiden Befehle zwei völlig unterschiedliche Bedeutungen haben:

    shell> mysql -ptest
    shell> mysql -p test
    

    Der erste Befehl weist mysql an, den Passwortwert test zu verwenden, gibt aber keine Standarddatenbank an. Der zweite Befehl hingegen weist mysql an, zur Eingabe des Passworts aufzufordern und test als Standarddatenbank zu verwenden.

Einige Optionen steuern Verhaltensweisen, die sich aktivieren oder deaktivieren lassen. So unterstützt der Client mysql etwa eine Option --column-names, die bestimmt, ob zu Beginn der Abfrageergebnisse eine Zeile mit Spaltennamen angezeigt wird oder nicht. Standardmäßig ist diese Option aktiviert. Unter Umständen kann es jedoch sinnvoll sein, sie zu deaktivieren, wenn Sie beispielsweise die Ausgabe von mysql an ein anderes Programm übergeben, das nur die Daten und keine Kopfzeile erwartet.

Sie können die Spaltennamen mit jeder der folgenden Optionen deaktivieren:

--disable-column-names
--skip-column-names
--column-names=0

Die Präfixe --disable und --skip und das Suffix =0 haben den jeweils gleichen Effekt: Sie schalten die Option ab.

Um die „einschaltende“ Form der Option anzugeben, gibt es die folgenden Möglichkeiten:

--column-names
--enable-column-names
--column-names=1

Wenn einer Option das Präfix --loose vorangestellt wird, bricht ein Programm, dass die Option nicht erkennt, nicht mit einer Fehlermeldung ab, sondern setzt lediglich eine Warnung ab:

shell> mysql --loose-no-such-option
mysql: WARNING: unknown option '--no-such-option'

Das Präfix --loose kann nützlich sein, wenn Sie Programme unter mehreren MySQL-Installationen auf demselben Computer ausführen und die Optionen in einer Optionsdatei auflisten. Eine Option, die unter Umständen nicht von allen Versionen eines Programms erkannt wird, kann mithilfe des Präfixes --loose (bzw. loose in einer Optionsdatei) angegeben werden. Versionen des Programms, die die Option erkennen, werden sie dann in der Regel auch verarbeiten, während Programmversionen, die sie nicht erkennen, eine Warnung absetzen und sie ansonsten ignorieren.

Eine andere Option, die in Verbindung mit mysql gelegentlich nützlich sein kann, ist --execute oder -e. Hiermit können Sie SQL-Anweisungen an den Server übergeben. Die Anweisungen müssen in einfache oder doppelte Anführungszeichen gesetzt sein. Wenn Sie Werte in Anführungszeichen innerhalb einer Anweisung angeben wollen, sollten Sie doppelte Anführungszeichen für die Anweisung selbst und einfache Anführungszeichen für Werte innerhalb der Anweisung benutzen. Wenn Sie diese Option verwenden, führt mysql die Anweisung aus und wird dann beendet.

So können Sie beispielsweise mithilfe des folgenden Befehls eine Liste der Benutzerkonten aufrufen:

shell> mysql -u root -p --execute="SELECT User, Host FROM user" mysql
Enter password: ******
+------+-----------+
| User | Host      |
+------+-----------+
|      | gigan     |
| root | gigan     |
|      | localhost |
| jon  | localhost |
| root | localhost |
+------+-----------+
shell>

Beachten Sie, dass auf die Langform (--execute) das Gleichheitszeichen (=) folgen muss.

In obigem Beispiel wurde der Name der Datenbank mysql als separates Argument übergeben. Dieselbe Anweisung hätte auch mit dem folgenden Befehl ausgeführt werden können, der keine Standarddatenbank angibt:

mysql> mysql -u root -p --execute="SELECT User, Host FROM mysql.user"

Über die Befehlszeile lassen sich mehrere SQL-Anweisungen durch Semikola getrennt angeben:

shell> mysql -u root -p -e "SELECT VERSION();SELECT NOW()"
Enter password: ******
+-----------------+
| VERSION()       |
+-----------------+
| 5.1.5-alpha-log |
+-----------------+
+---------------------+
| NOW()               |
+---------------------+
| 2006-01-05 21:19:04 |
+---------------------+

Die Option --execute oder -e kann auch verwendet werden, um Befehle in analoger Form an ndb_mgm, den Verwaltungsclient für MySQL Cluster, zu übergeben. Ein Beispiel finden Sie in Abschnitt 16.3.6, „Sicheres Herunterfahren und Neustarten“.

4.3.2. my.cnf-Optionsdateien

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:

DateinameZweck
WINDIR\my.iniglobale Optionen
C:\my.cnfglobale Optionen
INSTALLDIR\my.iniglobale Optionen
defaults-extra-filedie ggf. mit --defaults-extra-file=path 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:\PROGRAMDIR\MySQL\MySQL 5.1 Server, wobei PROGRAMDIR 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:

DateinameZweck
/etc/my.cnfglobale Optionen
$MYSQL_HOME/my.cnfserverspezifische Optionen
defaults-extra-filedie ggf. mit --defaults-extra-file=path angegebene Datei
~/.my.cnfbenutzerspezifische 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-opt_name in einer Optionsdatei anzugeben, schreiben Sie sie als 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 --opt_name auf der Befehlszeile.

  • opt_name=value

    Entspricht --opt_name=value auf der Befehlszeile. In einer Optionsdatei können Sie – anders als auf der Befehlszeile – Leerzeichen um das Gleichheitszeichen ‘=’ 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=value für Zeilen, die die Variablen 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-xxxx.cnf im Verzeichnis support-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.

4.3.3. Verwendung von Umgebungsvariablen für die Angabe von Optionen

Um eine Option in einer Umgebungsvariablen anzugeben, stellen Sie die Variable unter Verwendung der für Ihren Befehls-Interpreter passenden Syntax ein. Unter Windows oder NetWare etwa können Sie die Variable USER zur Angabe Ihres MySQL-Kontennamens verwenden. Benutzen Sie zu diesem Zweck folgende Syntax:

SET USER=your_name

Die Unix-Syntax hängt von der verwendeten Shell ab. Nehmen wir an, Sie wollen die TCP/IP-Portnummer über die Variable MYSQL_TCP_PORT festlegen. Die typische Syntax (etwa bei sh, bash, zsh usw.) sieht so aus:

MYSQL_TCP_PORT=3306
export MYSQL_TCP_PORT

Der erste Befehl stellt die Variable ein, und der Befehl export exportiert diese dann in die Shell-Umgebung, sodass ihr Wert für MySQL und andere Prozesse verfügbar wird.

Bei csh und tcsh machen Sie die Shell-Variable mithilfe von setenv für die Umgebung verfügbar:

setenv MYSQL_TCP_PORT 3306

Die Befehle zur Einstellung von Umgebungsvariablen können Sie an der Eingabeaufforderung ausführen; sie werden dann sofort gültig, bleiben es aber nur, bis Sie sich abmelden. Damit die Einstellungen bei jeder Anmeldung übernommen werden, legen Sie den oder die entsprechenden Befehle in einer Autostartdatei ab, die Ihr Befehls-Interpreter bei jedem Start ausliest. Typische Autostartdateien sind AUTOEXEC.BAT unter Windows, .bash_profile unter bash oder .tcshrc unter tcsh. Weitere Informationen entnehmen Sie der Dokumentation zu Ihrem Befehls-Interpreter.

Anhang F, Umgebungsvariablen, listet alle Umgebungsvariablen auf, die den Betrieb von MySQL-Programmen beeinflussen.

4.3.4. Verwendung von Optionen zum Setzen von Programmvariablen

Viele MySQL-Programme haben interne Variablen, die zur Laufzeit eingestellt werden können. Programmvariablen werden auf die gleiche Weise eingestellt wie andere Langformoptionen, die einen Wert entgegennehmen. Beispielsweise hat mysql eine Variable max_allowed_packet, mit der die maximale Größe des Kommunikationspuffers eingestellt wird. Um die Variable max_allowed_packet für mysql auf einen Wert von 16 Mbyte einzustellen, können Sie einen der folgenden Befehle verwenden:

shell> mysql --max_allowed_packet=16777216
shell> mysql --max_allowed_packet=16M

Der erste Befehl gibt den Wert in Byte an, der zweite den Wert in Mbyte. Bei Variablen, 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. (Bei der Einstellung von max_allowed_packet etwa würden hiermit die Werte als Kbyte, Mbyte oder Gbyte angegeben.)

In einer Optionsdatei werden die Variableneinstellungen ohne führende Bindestriche angegeben:

[mysql]
max_allowed_packet=16777216

Oder:

[mysql]
max_allowed_packet=16M

Wenn Sie wollen, können Sie Unterstriche in einem Variablennamen als Bindestriche angeben. Die folgenden Optionsabschnitte sind gleichwertig. Beide setzen die Größe des Schlüsselpuffers am Server auf 512 Mbyte:

[mysqld]
key_buffer_size=512M

[mysqld]
key-buffer-size=512M

Hinweis: Vor MySQL 4.0.2 lautet die einzige verfügbare Syntax zur Einstellung von Programmvariablen --set-variable=option=value (bzw. set-variable=option=value in Optionsdateien). Diese Syntax wird zwar nach wie vor erkannt, findet aber seit MySQL 4.0.2 keine Akzeptanz mehr.

Viele Serversystemvariablen können auch zur Laufzeit angegeben werden. Detaillierte Informationen finden Sie in Abschnitt 5.2.3.2, „Dynamische Systemvariablen“.


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.