Beinhaltet der %-Wert im neu erstellten MySQL-Benutzer localhost?

Beinhaltet der %-Wert im neu erstellten MySQL-Benutzer localhost?

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: test_user@127.0.0.1
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 xx@127.0.0.1 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: test_user@127.0.0.1
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: test_user@127.0.0.1
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: test_user@127.0.0.1
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: test_user@127.0.0.1
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: test_user@127.0.0.1
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

<<:  Beispiel für die Konfiguration der domänenübergreifenden Fehlerbehebung in nginx

>>:  Eine kurze Diskussion über die Verwendung von Vue zur Fertigstellung des mobilen APK-Projekts

Artikel empfehlen

Das Laufschriftelement implementiert Effekte wie scrollende Schriften und Bilder

Mit dem Laufschriftelement können Sie einfache Gle...

Eine kurze Analyse des Unterschieds zwischen ref und toRef in Vue3

1. ref wird kopiert, die Ansicht wird aktualisier...

Erfahren Sie, wie Sie Vue3 Reactivity implementieren

Inhaltsverzeichnis Vorwort Start Ein kleiner Geda...

Docker-Volumes-Dateizuordnungsmethode

Hintergrund Wenn Sie am Blockchain-Protokollmodul...

Detaillierte Erklärung des JavaScript-Proxy-Objekts

Inhaltsverzeichnis 1. Was ist ein Proxy? 2. Wie w...

Spielen Sie mit der Connect-Funktion mit Timeout in Linux

Im vorherigen Artikel haben wir mit Timeouts unte...

Detaillierte Erklärung der Beziehung zwischen Vue und VueComponent

Der folgende Fall überprüft die Wissenspunkte der...

Einführung in die Verwendung gängiger XHTML-Tags

Es gibt viele Tags in XHTML, aber nur wenige werd...

Implementierung der Validierungsregel für Vue Element-ui-Formulare

Inhaltsverzeichnis 1. Einleitung 2. Eingabemodus ...

So installieren Sie JDK8 unter Windows

1. Herunterladen: http://www.oracle.com/technetwo...

MySQL-Initialisierungskennwortvorgang unter Mac

Eine einfache Aufzeichnung der Datenbank-Startpro...

So beheben Sie die durch MySQL DDL verursachte Synchronisierungsverzögerung

Inhaltsverzeichnis Vorwort Lösung Tool-Einführung...