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: [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

<<:  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

Einführung in Docker-Container

Docker-Übersicht Docker ist eine Open-Source-Lösu...

Zusammenfassung gängiger Befehle zur Linux-Benutzer- und Gruppenverwaltung

Dieser Artikel fasst die allgemeinen Befehle zur ...

MySQL-Beispielcode für die Addition und Subtraktion von Datum und Uhrzeit

Inhaltsverzeichnis 1.MySQL addiert oder subtrahie...

Die Vue-Konfigurationsdatei generiert automatisch Routing- und Menüinstanzcode

Inhaltsverzeichnis Vorne geschrieben router.json ...

Beispiele für die Erstellung und Verwendung von MySQL-Triggern

Inhaltsverzeichnis Was ist ein Auslöser Erstellen...

MySQL-Datenbank implementiert OLTP-Benchmark-Test basierend auf Sysbench

Sysbench ist ein hervorragendes Benchmark-Tool, d...

VMware ESXi 5.5 Bereitstellungs- und Konfigurationsdiagrammprozess

Inhaltsverzeichnis 1. Installationsvoraussetzunge...

Detaillierte Erklärung der Lösung für den 404-Fehler von Tomcat

Das 404-Problem tritt im Tomcat-Test auf. Die Pro...

Detailliertes Tutorial zur Verwendung des Prettier Code-Plugins in vscode

Warum prettier verwenden? In großen Unternehmen k...

Spezifische Verwendung des Linux-gcc-Befehls

01. Befehlsübersicht Der Befehl gcc verwendet den...

Der Implementierungsprozess der Linux-Prozessnetzwerkverkehrsstatistik

Vorwort Linux verfügt über entsprechende Open-Sou...