MySQL :: MySQL 8.0 Reference Manual :: 4.2.4 Herstellen einer Verbindung zum MySQL-Server mithilfe der Befehlsoptionen

4.2.4 Herstellen einer Verbindung zum MySQL-Server mithilfe der Befehlsoptionen

Dieser Abschnitt beschreibt die Verwendung von Befehlszeilenoptionen, um anzugeben, wie Verbindungen zum MySQL-Server für Clients wie mysql oder mysqldump hergestellt werden. Informationen zum Herstellen von Verbindungen mithilfe von URI-ähnlichen Verbindungszeichenfolgen oder Schlüssel-Wert-Paaren für Clients wie MySQL Shell finden Sie in Abschnitt 4.2.5, „Herstellen einer Verbindung zum Server mithilfe von URI-ähnlichen Zeichenfolgen oder Schlüssel-Wert-Paaren“. Weitere Informationen, wenn Sie keine Verbindung herstellen können, finden Sie in Abschnitt 6.2.21, „Fehlerbehebung bei Problemen beim Herstellen einer Verbindung mit MySQL“.

Damit ein Client-Programm eine Verbindung zum MySQL-Server herstellen kann, muss es die richtigen Verbindungsparameter verwenden, z. B. den Namen des Hosts, auf dem der Server ausgeführt wird, sowie den Benutzernamen und das Kennwort Ihres MySQL-Kontos. Jeder Verbindungsparameter hat einen Standardwert, aber Sie können Standardwerte bei Bedarf mithilfe von Programmoptionen überschreiben, die entweder in der Befehlszeile oder in einer Optionsdatei angegeben sind.

Die Beispiele hier verwenden das MySQL-Client-Programm, aber die Prinzipien gelten für andere Clients wie mysqldump, mysqladmin oder mysqlshow.

Dieser Befehl ruft mysql auf, ohne explizite Verbindungsparameter anzugeben:

mysql

Da es keine Parameteroptionen gibt, gelten die Standardwerte:

  • Der Standardhostname lautet localhost. Unter Unix hat dies eine besondere Bedeutung, wie später beschrieben.

  • Der Standardbenutzername ist ODBC unter Windows oder Ihr Unix-Anmeldename unter Unix.

  • Es wird kein Passwort gesendet, da weder --password noch -p angegeben ist.

  • Für mysql wird das erste Nichtoptionsargument als Name der Standarddatenbank verwendet. Da es kein solches Argument gibt, wählt mysql keine Standarddatenbank aus.

Um den Hostnamen und den Benutzernamen sowie ein Kennwort explizit anzugeben, geben Sie entsprechende Optionen in der Befehlszeile an. Um eine Standarddatenbank auszuwählen, fügen Sie ein Datenbankname-Argument hinzu. Beispiele:

mysql --host=localhost --user=myname --password=password mydbmysql -h localhost -u myname -ppassword mydb

Für Kennwortoptionen ist der Kennwortwert optional:

  • Wenn Sie eine --password oder -p Option verwenden und einen Kennwortwert angeben, gibt es darf kein Leerzeichen zwischen --password= oder -p und dem folgenden Passwort sein.

  • Wenn Sie --password oder -p verwenden, aber keinen Kennwortwert angeben, werden Sie vom Clientprogramm aufgefordert, das Kennwort einzugeben. Das Passwort wird bei der Eingabe nicht angezeigt. Dies ist sicherer als die Angabe des Kennworts in der Befehlszeile, wodurch andere Benutzer auf Ihrem System die Kennwortzeile möglicherweise sehen können, indem Sie einen Befehl wie ps ausführen. Siehe Abschnitt 6.1.2.1, „Endbenutzer-Richtlinien für Passwortsicherheit“.

  • Verwenden Sie die --skip-password-Option, um explizit anzugeben, dass kein Kennwort vorhanden ist und das Clientprogramm nicht zur Eingabe eines Kennworts auffordern soll.

Wie gerade erwähnt, ist das Einfügen des Kennwortwerts in die Befehlszeile ein Sicherheitsrisiko. Um dieses Risiko zu vermeiden, geben Sie die Option --password oder -p ohne folgenden Kennwortwert an:

mysql --host=localhost --user=myname --password mydbmysql -h localhost -u myname -p mydb

Wenn die Option --password oder -p ohne Kennwortwert angegeben ist, gibt das Clientprogramm eine Eingabeaufforderung aus und wartet auf die Eingabe des Kennworts. (In diesen Beispielen wird mydb nicht als Kennwort interpretiert, da es von der vorherigen Kennwortoption durch ein Leerzeichen getrennt ist.)

Auf einigen Systemen beschränkt die Bibliotheksroutine, die MySQL zur Eingabe eines Kennworts verwendet, das Kennwort automatisch auf acht Zeichen. Diese Einschränkung ist eine Eigenschaft der Systembibliothek, nicht MySQL. Intern hat MySQL keine Begrenzung für die Länge des Passworts. Um die Einschränkung auf betroffenen Systemen zu umgehen, geben Sie Ihr Passwort in einer Optionsdatei an (siehe Abschnitt 4.2.2.2, „Optionsdateien verwenden“). Eine weitere Problemumgehung besteht darin, Ihr MySQL-Kennwort in einen Wert mit acht oder weniger Zeichen zu ändern, was jedoch den Nachteil hat, dass kürzere Kennwörter tendenziell weniger sicher sind.

Clientprogramme bestimmen wie folgt, welche Art von Verbindung hergestellt werden soll:

  • Wenn der Host nicht angegeben ist oder localhost ist, erfolgt eine Verbindung zum lokalen Host:

    • Unter Windows verbindet sich der Client über Shared Memory, wenn der Server mit dem shared_memory Systemvariable aktiviert, um Shared-Memory-Verbindungen zu unterstützen.

    • Unter Unix behandeln MySQL-Programme den Hostnamen localhost speziell auf eine Weise, die sich wahrscheinlich von dem unterscheidet, was Sie im Vergleich zu anderen netzwerkbasierten Programmen erwarten: der Client verbindet sich über eine Unix-Socket-Datei. Die --socket Option oder die MYSQL_UNIX_PORT Umgebungsvariable kann verwendet werden, um den Socket-Namen anzugeben.

  • Wenn unter Windows host. (Punkt) ist oder TCP/IP nicht aktiviert ist und --socket nicht angegeben ist oder der Host leer ist, stellt der Client eine Verbindung über eine Named Pipe her, wenn der Server gestartet mit der named_pipe -Systemvariablen, die zur Unterstützung von Named-Pipe-Verbindungen aktiviert ist. Wenn Named-Pipe-Verbindungen nicht unterstützt werden oder wenn der Benutzer, der die Verbindung herstellt, nicht Mitglied der Windows-Gruppe ist, die durch die named_pipe_full_access_group -Systemvariable angegeben wird, tritt ein Fehler auf.

  • Andernfalls verwendet die Verbindung TCP/IP.

Mit der Option --protocol können Sie ein bestimmtes Transportprotokoll verwenden, auch wenn andere Optionen normalerweise zur Verwendung eines anderen Protokolls führen. Das heißt, --protocol spezifiziert das Transportprotokoll explizit und überschreibt die vorhergehenden Regeln, auch für localhost.

Es werden nur Verbindungsoptionen verwendet oder geprüft, die für das ausgewählte Transportprotokoll relevant sind. Andere Verbindungsoptionen werden ignoriert. Unter Unix versucht der Client beispielsweise mit --host=localhost, über eine Unix-Socket-Datei eine Verbindung zum lokalen Server herzustellen, selbst wenn eine --port oder -P Option angegeben ist, um eine TCP/IP-Portnummer anzugeben.

Um sicherzustellen, dass der Client eine TCP/IP-Verbindung zum lokalen Server herstellt, verwenden Sie --host oder -h, um einen Hostnamenwert von 127.0.0.1 (anstelle von localhost) oder die IP-Adresse oder name des lokalen Servers. Sie können das Transportprotokoll auch explizit angeben, auch für localhost, indem Sie die Option --protocol=TCP verwenden. Beispiel:

mysql --host=127.0.0.1mysql --protocol=TCP

Wenn der Server für IPv6-Verbindungen konfiguriert ist, können Clients über --host=::1 eine Verbindung zum lokalen Server über IPv6 herstellen. Siehe Abschnitt 5.1.13, „IPv6-Unterstützung“.

Geben Sie unter Windows die Option --pipe oder --protocol=PIPE oder . (Punkt) als Hostnamen an, um einen MySQL-Client zur Verwendung einer Named-Pipe-Verbindung zu zwingen. Wenn der Server nicht mit der named_pipe -Systemvariablen gestartet wurde, die Named-Pipe-Verbindungen unterstützt, oder wenn der Benutzer, der die Verbindung herstellt, kein Mitglied der Windows-Gruppe ist, die durch die named_pipe_full_access_group -Systemvariable angegeben wird, tritt ein Fehler auf. Verwenden Sie die Option --socket, um den Namen der Pipe anzugeben, wenn Sie den Standard-Pipe-Namen nicht verwenden möchten.

Verbindungen zu entfernten Servern verwenden TCP/IP. Dieser Befehl stellt eine Verbindung zum Server her, der unter remote.example.com unter Verwendung der Standardportnummer (3306) ausgeführt wird:

mysql --host=remote.example.com

Um eine Portnummer explizit anzugeben, verwenden Sie die Option --port oder -P:

mysql --host=remote.example.com --port=13306

Sie können auch eine Portnummer für Verbindungen zu einem lokalen Server angeben. Wie bereits erwähnt, verwenden Verbindungen zu localhost unter Unix standardmäßig eine Socket-Datei.

Für diesen Befehl verwendet das Programm eine Socket-Datei unter Unix und die Option --port wird ignoriert:

mysql --port=13306 --host=localhost

Um die Verwendung der Portnummer zu veranlassen, erzwingen Sie eine TCP/IP-Verbindung. Rufen Sie das Programm beispielsweise wie folgt auf:

mysql --port=13306 --host=127.0.0.1mysql --port=13306 --protocol=TCP

Weitere Informationen zu Optionen, die steuern, wie Clientprogramme Verbindungen zum Server herstellen, finden Sie in Abschnitt 4.2.3, „Befehlsoptionen für die Verbindung zum Server“.

Es ist möglich, Verbindungsparameter anzugeben, ohne sie bei jedem Aufruf eines Clientprogramms in der Befehlszeile einzugeben:

  • Geben Sie die Verbindungsparameter im Abschnitt einer Optionsdatei an. Der entsprechende Abschnitt der Datei könnte folgendermaßen aussehen:

    host=host_nameuser=user_namepassword=password

    Weitere Informationen finden Sie in Abschnitt 4.2.2.2, „Verwenden von Optionsdateien“.

  • Einige Verbindungsparameter können mit Umgebungsvariablen angegeben werden. Beispiel:

    • Um den Host für mysql anzugeben, verwenden Sie MYSQL_HOST.

    • Unter Windows verwenden Sie USER, um den MySQL-Benutzernamen anzugeben.

    Eine Liste der unterstützten Umgebungsvariablen finden Sie in Abschnitt 4.9, „Umgebungsvariablen“.



Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.