Kapitel 4. Benutzung von MySQL-Programmen
Zurück |  | Weiter

## Kapitel 4. Benutzung von MySQL-Programmen

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:

- MySQL Administrator: Dieses Tool dient der Administration von MySQL Servern, Datenbanken, Tabellen und Benutzerkonten.

- MySQL Query Browser: Dieses grafische Tool von MySQL AB erlaubt das Erstellen, Ausführen und Optimieren von Abfragen über MySQL-Datenbanken.

- MySQL Migration Toolkit: Dieses Tool erleichtert Ihnen die Migration von Schemata und Daten aus anderen Datenbanksystemen zur Verwendung mit MySQL.

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 `-p`pass_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:

Dateiname | Zweck
``WINDIR`\my.ini` | globale Optionen
`C:\my.cnf` | globale Optionen
``INSTALLDIR`\my.ini` | globale Optionen
`defaults-extra-file` | die 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:

Dateiname | Zweck
`/etc/my.cnf` | globale Optionen
`$MYSQL_HOME/my.cnf` | serverspezifische Optionen
`defaults-extra-file` | die ggf. mit `--defaults-extra-file=`path`` 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-`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.

Zurück |  | Weiter
Kapitel 3. Einführung in MySQL: ein MySQL-Tutorial | Zum Anfang | Kapitel 5. Datenbankverwaltung