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

So sichern Sie die MySQL-Datenbank regelmäßig automatisch

Wir alle wissen, dass Daten unbezahlbar sind. Wen...

HTML Mehrere spezielle Trennlinieneffekte

1. Grundlinien 2. Spezialeffekte (die Effekte sin...

So kapseln Sie Axios-Anfragen mit Vue

Tatsächlich ist es sehr einfach, Axios in Vue zu ...

Detaillierte Erklärung der Docker-Maschinennutzung

Docker-Machine ist ein offiziell von Docker berei...

Mehrere Möglichkeiten, Bilder in React-Projekte einzuführen

Der img-Tag führt das Bild ein Da React die Seite...

Implementierung des React Page Turner (inkl. Front- und Backend)

Inhaltsverzeichnis Frontend Entwerfen und schreib...

jQuery-Plugin zum Erreichen einer Bildunterbrechung

In diesem Artikel wird der spezifische Code des j...

503 Dienst nicht verfügbar Fehlerlösungserklärung

1. Beim Öffnen der Webseite wird die Meldung „503...

Analysieren des MySQL-Binärprotokolls

Inhaltsverzeichnis 1. Einführung in Binlog 2. Bin...

MySQL-Datenbank-Grundlagen SQL-Fensterfunktion Beispielanalyse-Tutorial

Inhaltsverzeichnis Einführung Einführung Aggregat...