Eine kurze Diskussion über die Fallstricke und Lösungen der neuen Features von MySQL 8.0 (Zusammenfassung)

Eine kurze Diskussion über die Fallstricke und Lösungen der neuen Features von MySQL 8.0 (Zusammenfassung)

1. Benutzer anlegen und autorisieren

Das Erstellen von Benutzern und die Autorisierung in MySQL 8.0 unterscheiden sich von früher. Streng genommen kann man nicht sagen, dass es anders ist, sondern nur, dass es strenger ist. MySQL 8.0 erfordert das Erstellen von Benutzern und das Festlegen von Kennwörtern vor der Autorisierung.

#Erstellen Sie einen Benutzer. Erstellen Sie zuerst den Benutzer „hong“@„%“, identifiziert durch „123123“.

#Autorisieren Sie die Gewährung aller Berechtigungen für *.* an „hong“@„%“ mit der Gewährungsoption;

Wenn Sie immer noch die ursprüngliche 5.7-Methode verwenden, wird ein Fehler gemeldet:

gewähren Sie „sroot“@„%“, gekennzeichnet durch „123123“, alle Privilegien für *.*;

FEHLER 1064 (42000): Ihre SQL-Syntax weist einen Fehler auf. Überprüfen Sie im Handbuch zu Ihrer MySQL-Serverversion die richtige Syntax für die Stelle „identified by ‚123123‘“ in Zeile 1.

2. Remote-Verbindung von MySQL 8.0

Nach der Installation von MySQL 8.0 ist keine Remoteverbindung mehr möglich. Dies liegt daran, dass MySQL 8.0 nur den Zugriff auf den lokalen Host unterstützt. Wir müssen es einrichten, bevor wir remote darauf zugreifen können.

Die spezifischen Einstellungsschritte sind wie folgt:

① Melden Sie sich bei MySQL an

Der Ausführungsbefehl lautet: mysql -u root -p

Geben Sie das Passwort ein, nachdem Sie die Eingabetaste gedrückt haben

② MySQL-Datenbank auswählen

Der Ausführungsbefehl lautet: use mysql;

Zeigen Sie die Benutzertabelle an, in der Benutzerinformationen in der MySQL-Datenbank gespeichert sind.

③ Zeigen Sie die relevanten Informationen des aktuellen Root-Benutzers in der Benutzertabelle der MySQL-Datenbank an

Der Ausführungsbefehl lautet: select host,user,authentication_string,plugin from user;

Nachdem der Befehl ausgeführt wurde, wird eine Tabelle angezeigt. Der Host des Root-Benutzers ist standardmäßig localhost, was bedeutet, dass nur lokaler Zugriff unterstützt wird und Remotezugriff nicht zulässig ist.

④ Ändern Sie die Standardkonfiguration des Hosts

Der Ausführungsbefehl lautet: update user set host='%' where user='root';

⑤ Aktualisieren

Der Ausführungsbefehl lautet: „Flush Privileges“;

Ich dachte, das wäre alles, aber als ich Navicat zur Remote-Verbindung mit MySQL verwendete, erschien ein Popup-Fenster mit einem Fehler:


Der Grund dafür ist, dass die Verschlüsselungsregel in Versionen vor mysql8 mysql_native_password lautet und nach mysql8 die Verschlüsselungsregel caching_sha2_password. Es gibt zwei Möglichkeiten, das Problem zu lösen. Eine besteht darin, den Navicat-Treiber zu aktualisieren, und die andere darin, die Verschlüsselungsregel des MySQL-Benutzeranmeldekennworts auf mysql_native_password zurückzusetzen. Ich verwende die zweite Methode:

ALTER USER 'root'@'%' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #Verschlüsselungsregeln ändern
 ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'password'; #Passwort des Benutzers aktualisieren FLUSH PRIVILEGES; #Berechtigungen aktualisieren

Das Problem ist gelöst.

Hinweise zum Festlegen des mysql8.0-Benutzerkennworts

In MySQL 8.0.11 ist caching_sha2_password anstelle von mysql_native_password das Standardauthentifizierungs-Plugin. Informationen zu den Auswirkungen dieser Änderung auf den Serverbetrieb und die Serverkompatibilität mit Clients und Konnektoren finden Sie unter caching_sha2_password als bevorzugtes Authentifizierungs-Plugin. (Übersetzt von https://dev.mysql.com/doc/refman/8.0/en/caching-sha2-pluggable-authentication.html)

Heute habe ich beim Konfigurieren und Installieren von mysql8.0.11 auf einem neuen Dienst das MySQL-Passwort wie gewohnt festgelegt. Nachdem die Einstellung erfolgreich war, gebe ich in der Shell mysql -u root -p ein und gebe dann das Passwort ein, um normal einzutreten. In phpmyadmin oder direkt über die Verbindung unter http://php.net/manual/zh/mysqli.real-connect.php wird jedoch angezeigt, dass die Verbindung nicht hergestellt werden kann. Die spezifische Fehlermeldung lautet

mysqli_real_connect(): Der Server hat eine dem Client unbekannte Authentifizierungsmethode angefordert [sha256_password]

Nachdem ich herumgesucht und die offizielle Dokumentation gefunden hatte, stellte ich fest, dass ab Version 8.0.11 die Standardüberprüfungsmethode zum Festlegen von Benutzerkennwörtern nicht mehr caching_sha2_password ist, wie in MySQL 5.7 und früheren Versionen. Wenn Sie feststellen, dass das ursprüngliche Programm nach dem Upgrade auf MySQL 8.0.11 keine Verbindung zu MySQL herstellen kann, können Sie den folgenden Befehl im MySQL-Befehlszeilenclient verwenden, um es schnell auf die Kennwortüberprüfungsmethode von MySQL 5.7 und früheren Versionen einzustellen. Gleichzeitig unterscheidet sich die Methode zum Ändern von Kennwörtern unter MySQL 8.0.11 geringfügig von der ursprünglichen Methode, und einige der ursprünglichen Befehle zum Ändern von Kennwörtern können unter MySQL 8.0.11 nicht verwendet werden.

> MySQL verwenden 

> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Ihr Passwort'; 

> FLUSH-PRIVILEGIEN; 

Das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, er wird für jedermanns Studium hilfreich sein. Ich hoffe auch, dass jeder 123WORDPRESS.COM unterstützen wird.

Das könnte Sie auch interessieren:
  • Was bei der Migration von MySQL auf 8.0 zu beachten ist (Zusammenfassung)
  • Wie installiert und verbindet man Navicat in MySQL 8.0.20 und worauf muss man achten?
  • So beheben Sie verschiedene Fehler bei der Verwendung von JDBC zum Herstellen einer Verbindung zu Mysql 8.0.11
  • Detaillierte Erklärung der Fallstricke von MySQL 8.0
  • Hinweise zum passenden MySql 8.0 und entsprechenden Treiberpaketen

<<:  Detaillierte Erklärung der dynamischen Angular-Komponenten

>>:  Detaillierte Erläuterung der Nginx-Strombegrenzungskonfiguration

Artikel empfehlen

MySQL-Serie 9 MySQL-Abfrage-Cache und -Index

Inhaltsverzeichnis Tutorial-Reihe 1. MySQL-Archit...

Achten Sie bei der Webseitenerstellung auf die Verwendung von HTML-Tags

Dieser Artikel stellt einige Aspekte von HTML-Tag...

Aktivierungsmethode für Windows Service 2016 Datacenter\Stand\Embedded (2021)

Führen Sie cmd mit Administratorrechten aus slmgr...

Mysql-Abfrageanweisung mit mehreren Bedingungen und dem Schlüsselwort „And“

MySQL-Abfrage mit mehreren Bedingungen und dem Sc...

So installieren Sie Oracle_11g mit Docker

Installieren Sie Oracle_11g mit Docker 1. Ziehen ...

Detaillierte Erklärung zur Verbindung von Java mit Mysql Version 8.0.18

In Bezug auf die Verbindungsmethode zwischen Java...

5 Möglichkeiten, um schnell den Leerraum eines Inline-Blocks in HTML zu entfernen

Der Eigenschaftswert „Inline-Block“ ist sehr nütz...

Vue Grundanleitung Beispiel grafische Erklärung

Inhaltsverzeichnis 1. v-on-Richtlinie 1. Grundleg...

So verwenden Sie Maxwell zum Synchronisieren von MySQL-Daten in Echtzeit

Inhaltsverzeichnis Über Maxwell Konfiguration und...

So zeigen Sie historische Befehle in Linux an und führen sie aus

Historische Befehle anzeigen und bestimmte Befehl...

Implementierung der Multi-Port-Zuordnung des Nginx-Reverse-Proxys

Code Erklärung 1.1 http:www.baidu.test.com verwen...

Django2.* + Mysql5.7-Entwicklungsumgebung Integrations-Tutorial-Diagramm

Umfeld: MAC_OS 10.12 Python 3.6 MySQL 5.7.25 Djan...

Das WeChat-Applet implementiert feste Header- und Listentabellenkomponenten

Inhaltsverzeichnis brauchen: Funktionspunkte Rend...