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

Vue.js implementiert das Neun-Raster-Bildanzeigemodul

Ich habe Vue.js verwendet, um ein Bildanzeigemodu...

JavaScript zum Erreichen eines einfachen Tab-Leisten-Umschaltens

In diesem Artikel wird der spezifische Code für J...

Einführung in die gängigen Festplattenverwaltungsbefehle von Linux

Inhaltsverzeichnis 1. df-Befehl 2. du-Befehl 3. B...

MySQL-Installationstutorial unter Centos7

Tutorial zur MySQL-Installation. Zu Ihrer Informa...

Spezifische Verwendung des Vollbild-Scrollens von fullpage.js

1.fullpage.js Download-Adresse https://github.com...

Designtheorie: Hierarchie im Design

<br />Originaltext: http://andymao.com/andy/...

JavaScript-Canvas zum Erzielen eines Regentropfeneffekts

In diesem Artikelbeispiel wird der spezifische Co...

Beispielcode zur Implementierung eines zufälligen Roll Callers in HTML

Nachdem dieses Namensaufrufgerät mit dem Aufruf d...

So zeigen Sie den Datenbankinstallationspfad in MySQL an

Wir können den Installationspfad von MySQL über d...

Wissen Sie, wie man Mock in einem Vue-Projekt verwendet?

Inhaltsverzeichnis Erster Schritt: Der zweite Sch...

Zusammenfassung der Formulardesigntechniken im Webdesign

„Eingaben sollten in logische Gruppen unterteilt ...