Normale Erklärung % bedeutet, dass jeder Client eine Verbindung herstellen kann localhost bedeutet, dass nur der lokale Computer verbunden werden kann
Im Allgemeinen erhalten diejenigen, die auf die lokale Datenbank zugreifen können, Berechtigungen. Anderen Rechnern ist der Zugriff auf den lokalen MySQL-Port grundsätzlich untersagt. Wenn dies erlaubt ist, muss eine bestimmte IP-Adresse hinzugefügt werden, um sicherzustellen, dass nicht remote auf die Datenbank zugegriffen werden kann. 1 Einleitung Beim Betrieb von MySQL habe ich festgestellt, dass ich manchmal nur % des Kontos erstellt habe und mich über localhost verbinden konnte, manchmal aber auch nicht. Ich konnte bei der Online-Suche keine zufriedenstellende Antwort finden, also habe ich es einfach manuell getestet. 2 Zwei Verbindungsmethoden Die beiden hier erwähnten Verbindungsmethoden beziehen sich darauf, ob der Parameter -h beim Ausführen des MySQL-Befehls mit localhost oder IP gefüllt ist. Die Unterschiede zwischen den beiden Verbindungsmethoden sind wie folgt Der Parameter -h ist „localhost“ Wenn der Parameter -h localhost ist, wird tatsächlich eine Socket-Verbindung verwendet (die Standardverbindungsmethode). Das Beispiel lautet wie folgt [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost Passwort eingeben: ========= Ausgelassen ============= mysql> Status /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, für linux-glibc2.12 (x86_64) mit EditLine-Wrapper Verbindungs-ID: 9 Aktueller Datenbestand: Aktueller Benutzer: test_user@localhost SSL: Nicht in Verwendung Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Serverversion: 5.7.21-log MySQL Community Server (GPL) Protokollversion: 10 Verbindung: Localhost über UNIX-Socket
Unter „Aktueller Benutzer“ können wir sehen, dass der Benutzer xx@localhost ist und die Verbindungsmethode Localhost über UNIX-Socket ist. -h-Parameter ist IP Wenn der Parameter -h IP ist, wird tatsächlich eine TCP-Verbindung verwendet. Das Beispiel lautet wie folgt [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1 Passwort eingeben: ========= Ausgelassen ============= mysql> Status -------------- /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, für linux-glibc2.12 (x86_64) mit EditLine-Wrapper Verbindungs-ID: 11 Aktueller Datenbestand: Aktueller Benutzer: [email protected] SSL: Verwendete Verschlüsselung ist DHE-RSA-AES256-SHA Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Serverversion: 5.7.21-log MySQL Community Server (GPL) Protokollversion: 10 Verbindung: 127.0.0.1 über TCP/IP Server-Zeichensatz: utf8
Unter Aktueller Benutzer können Sie sehen, dass der Benutzer [email protected] ist und die Verbindungsmethode TCP/IP ist. 3 Unterschiede zwischen verschiedenen Versionen Die Testmethode dient dazu, zu prüfen, ob eine Verbindung hergestellt werden kann. Wenn Sie den Testvorgang nicht sehen möchten, können Sie zum Ende scrollen, um die Schlussfolgerung anzuzeigen. 3.1 MySQL 8.0 Benutzer erstellen mysql> Version auswählen(); +-------------+ | version() | +-------------+ | 8.0.11 | +-------------+ 1 Zeile im Satz (0,00 Sek.) mysql> Benutzer test_user@'%' erstellen, identifiziert durch 'test_user'; Abfrage OK, 0 Zeilen betroffen (0,07 Sek.) Anmeldung mit localhost [root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -hlocalhost Passwort eingeben: Willkommen beim MySQL-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 9 Serverversion: 8.0.11 MySQL Community Server – GPL ========= Ausgelassen ============= mysql> Status -------------- /usr/local/mysql80/bin/mysql Ver 8.0.11 für linux-glibc2.12 auf x86_64 (MySQL Community Server – GPL) Verbindungs-ID: 9 Aktueller Datenbestand: Aktueller Benutzer: test_user@localhost SSL: Nicht in Verwendung Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Serverversion: 8.0.11 MySQL Community Server – GPL Protokollversion: 10 Verbindung: Localhost über UNIX-Socket ...
Anmeldung mit IP [root@mysql-test-72 ~]# /usr/local/mysql80/bin/mysql -utest_user -p -h127.0.0.1 Passwort eingeben: Willkommen beim MySQL-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 8 Serverversion: 8.0.11 MySQL Community Server – GPL ========= Ausgelassen ============= mysql> Status -------------- /usr/local/mysql80/bin/mysql Ver 8.0.11 für linux-glibc2.12 auf x86_64 (MySQL Community Server – GPL) Verbindungs-ID: 8 Aktueller Datenbestand: Aktueller Benutzer: [email protected] SSL: Verwendete Verschlüsselung ist DHE-RSA-AES128-GCM-SHA256 Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Serverversion: 8.0.11 MySQL Community Server – GPL Protokollversion: 10 Verbindung: 127.0.0.1 über TCP/IP
Das Ergebnis zeigt MySQL Version 8.0, % einschließlich localhost 3.2 MySQL 5.7 % Benutzer erstellen db83-3306>>Benutzer test_user@'%' erstellen, identifiziert durch 'test_user'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
Anmeldung mit localhost [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost ========= Ausgelassen ============= mysql> Status /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, für linux-glibc2.12 (x86_64) mit EditLine-Wrapper Verbindungs-ID: 9 Aktueller Datenbestand: Aktueller Benutzer: test_user@localhost SSL: Nicht in Verwendung Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Serverversion: 5.7.21-log MySQL Community Server (GPL) Protokollversion: 10 Verbindung: Localhost über UNIX-Socket ....
Anmeldung mit IP [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1 Passwort eingeben: ========= Ausgelassen ============= mysql> Status -------------- /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, für linux-glibc2.12 (x86_64) mit EditLine-Wrapper Verbindungs-ID: 11 Aktueller Datenbestand: Aktueller Benutzer: [email protected] SSL: Verwendete Verschlüsselung ist DHE-RSA-AES256-SHA Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Serverversion: 5.7.21-log MySQL Community Server (GPL) Protokollversion: 10 Verbindung: 127.0.0.1 über TCP/IP Server-Zeichensatz: utf8 ...
Das Ergebnis zeigt MySQL Version 5.7, einschließlich localhost 3.3 MySQL 5.6 Benutzer erstellen db83-3306>>Version auswählen(); +------------+ | version() | +------------+ | 5.6.10-Protokoll | +------------+ 1 Zeile im Satz (0,00 Sek.) db83-3306>>Benutzer test_user@'%' erstellen, identifiziert durch 'test_user'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
Anmeldung mit localhost [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -hlocalhost Passwort eingeben: FEHLER 1045 (28000): Zugriff für Benutzer „test_user“@„localhost“ verweigert (mit Passwort: JA)
Anmeldung mit IP [mysql@mysql-test-83 ~]$ /usr/local/mysql57/bin/mysql -utest_user -p -h127.0.0.1 Passwort eingeben: Willkommen beim MySQL-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID ist 3 Serverversion: 5.6.10-log MySQL Community Server (GPL) ========= Ausgelassen ============= mysql> Status -------------- /usr/local/mysql57/bin/mysql Ver 14.14 Distrib 5.7.21, für linux-glibc2.12 (x86_64) mit EditLine-Wrapper Verbindungs-ID: 3 Aktueller Datenbestand: Aktueller Benutzer: [email protected] SSL: Nicht in Verwendung Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Serverversion: 5.6.10-log MySQL Community Server (GPL) Protokollversion: 10 Verbindung: 127.0.0.1 über TCP/IP ...... --------------
Die Ergebnisse zeigen, dass der Prozentsatz von MySQL 5.6 nicht localhost enthält 3.4 MySQL 5.1 Benutzer erstellen mysql> Version auswählen(); +-------------+ | version() | +-------------+ | 5.1.73 | +-------------+ 1 Zeile im Satz (0,00 Sek.) mysql> Benutzer test_user@'%' erstellen, identifiziert durch 'test_user'; Abfrage OK, 0 Zeilen betroffen (0,00 Sek.)
Anmeldung mit localhost [root@chengqm ~]# mysql -utest_user -p Passwort eingeben: FEHLER 1045 (28000): Zugriff für Benutzer „test_user“@„localhost“ verweigert (mit Passwort: JA) Anmeldung mit IP [root@chengqm ~]# mysql -utest_user -p -h127.0.0.1 Passwort eingeben: Willkommen beim MySQL-Monitor. Befehle enden mit ; oder \g. Ihre MySQL-Verbindungs-ID lautet 4901339 Serverversion: 5.1.73 Quellverteilung ========= Ausgelassen ============= mysql> Status -------------- mysql Ver 14.14 Distrib 5.1.73, für redhat-linux-gnu (x86_64) mit readline 5.1 Verbindungs-ID: 4901339 Aktueller Datenbestand: Aktueller Benutzer: [email protected] SSL: Nicht in Verwendung Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Serverversion: 5.1.73 Quellverteilung Protokollversion: 10 Verbindung: 127.0.0.1 über TCP/IP
Das Ergebnis zeigt, dass die Version 5.1 von % localhost nicht enthält 3.5 MariaDB 10.3 Benutzer erstellen db83-3306>>Version auswählen(); +---------------------+ | version() | +---------------------+ | 10.3.11-MariaDB-Protokoll | +---------------------+ 1 Zeile im Satz (0,000 Sek.) db83-3306>>Benutzer test_user@'%' erstellen, identifiziert durch 'test_user'; Abfrage OK, 0 Zeilen betroffen (0,001 Sek.)
Anmeldung mit localhost [mysql@mysql-test-83 ~]$ /usr/local/mariadb/bin/mysql -utest_user -p -hlocalhost Passwort eingeben: FEHLER 1045 (28000): Zugriff für Benutzer „test_user“@„localhost“ verweigert (mit Passwort: JA)
Anmeldung mit IP [mysql@mysql-test-83 ~]$ /usr/local/mariadb/bin/mysql -utest_user -p -h127.0.0.1 Passwort eingeben: Willkommen beim MariaDB-Monitor. Befehle enden mit ; oder \g. Ihre MariaDB-Verbindungs-ID ist 12 Serverversion: 10.3.11-MariaDB-log MariaDB Server ========= Ausgelassen ============= MariaDB [(keine)]> Status -------------- /usr/local/mariadb/bin/mysql Ver 15.1 Distrib 10.3.11-MariaDB, für Linux (x86_64) mit Readline 5.1 Verbindungs-ID: 12 Aktueller Datenbestand: Aktueller Benutzer: [email protected] SSL: Nicht in Verwendung Aktueller Pager: stdout Outfile wird verwendet: '' Trennzeichen verwenden: ; Server: MariaDB Serverversion: 10.3.11-MariaDB-log MariaDB Server Protokollversion: 10 Verbindung: 127.0.0.1 über TCP/IP
Die Ergebnisse zeigen, dass der %-Wert von MariaDB 10.3 nicht localhost einschließt 4 Fazit Version | Beinhaltet der %-Wert im Benutzer den lokalen Host? |
---|
MySQL 8.0 | enthalten | MySQL 5.7 | enthalten | MySQL 5.6 | Nicht enthalten | MySQL 5.1 | Nicht enthalten | MariaDB 10.3 | Nicht enthalten |
Damit endet dieser Artikel. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen. Das könnte Sie auch interessieren:- So ändern Sie schnell das Hostattribut eines MySQL-Benutzers
- So erlauben Sie allen Hosts den Zugriff auf MySQL
- Perfekte Lösung für das Problem, dass MySQL keine Verbindung zur Datenbank über localhost herstellen kann
- Lösung für das Problem, dass MySQL eine Verbindung über den lokalen Host herstellen kann, jedoch keine Verbindung über IP herstellen kann
- Eine kurze Diskussion über die Matching-Regeln von Host und Benutzer, wenn Mysql eine Verbindung zur Datenbank herstellt
|