Inhaltsverzeichnis
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.
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.
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.
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.
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=
oder als pass_val
--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
oder
als pass_val
-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“.
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.
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.
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=
(bzw.
option
=value
set-variable=
in Optionsdateien). Diese Syntax wird zwar nach wie vor erkannt,
findet aber seit MySQL 4.0.2 keine Akzeptanz mehr.
option
=value
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.