Heim  >  Artikel  >  Backend-Entwicklung  >  So lösen Sie das PHP-Inkompatibilitätsproblem

So lösen Sie das PHP-Inkompatibilitätsproblem

藏色散人
藏色散人Original
2021-02-07 09:29:032938Durchsuche

Lösungen für PHP-Inkompatibilität: 1. Ändern Sie „my.cnf“, um den Zeichensatz anzugeben. 2. Aktualisieren Sie das vorhandene Kontokennwort über „Benutzer ‚root‘@‘%‘ identifiziert mit …“; MySQL8.0.

So lösen Sie das PHP-Inkompatibilitätsproblem

Die Betriebsumgebung dieses Artikels: Windows 7-System, PHP Version 7.1, DELL G3-Computer.

Zusammenfassung der Inkompatibilitätsprobleme zwischen PHP und Mysql8

Nach der Installation von Mysql8.0 müssen wir mit unserem ursprünglichen PHP zusammenarbeiten. Der Code, der ursprünglich gut mit Mysql5.1 funktionierte, meldete jedoch plötzlich einen Fehler Es ist notwendig, etwas zusätzliche Arbeit zu leisten.

报错:PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers

Laut Online-Informationen hat Mysql8.0 den Standardzeichensatz auf utfmb4 geändert, sodass die Kommunikation mit dem Client (nicht nur PHP) nicht erkannt werden kann. Wir müssen my.cnf ändern, um den Zeichensatz anzugeben.

[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
collation-server = utf8_unicode_ci
character-set-server = utf8
报错:PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]

Laut Online-Informationen liegt dies an der Inkompatibilität der Verschlüsselungsmethode für die Benutzeridentitätsauthentifizierung. Die Standardmethode in mysql8.0 ist caching_sha2_password, was zu Kompatibilitätsproblemen mit älteren Versionen führt .

Empfohlen: „PHP-Video-Tutorial

Wir können die festzulegende Verschlüsselungsmethode angeben:

# 新建用户,使用旧版加密方式设置密码
CREATE USER username@localhost identified with mysql_native_password by 'password';
# 更新已存在的账号密码加密方式
alter user 'root'@'%' identified with mysql_native_password by 'password';

Aber eine bessere Möglichkeit besteht darin, eine Zeile mit der Standardkonfiguration hinzuzufügen:

[mysqld]
default_authentication_plugin = mysql_native_password
报错:Access denied for user 'root'@'localhost' (using password: YES)
mysql> GRANT ALL PRIVILEGES ON *.* TO 'oss'@'%';
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

Wenn ich anderen Benutzern Berechtigungen hinzufüge, nein Es wird ein Fehler gemeldet. Der Grund dafür ist, dass ich den Root-Benutzer versehentlich gelöscht habe, um dieses Problem zu lösen. Obwohl der Root-Benutzer, den ich wiederhergestellt habe, Grant_priv: Y hat, kann er immer noch keine Berechtigungen zuweisen. was mir Kopfschmerzen bereitet.

Lösung: Neu installieren, siehe Artikel zur Installation von Mysql8.0.

Zusammenfassung

Was sind die neuen Funktionen von mysql8.0? Ich habe die Dokumentation nicht im Detail überprüft, aber die Kompatibilität ließ mich zuerst leiden, nachdem ich diese drei Probleme gelöst hatte Ich bin fertig, ich werde PHP5.1 auf PHP7 aktualisieren.

Das obige ist der detaillierte Inhalt vonSo lösen Sie das PHP-Inkompatibilitätsproblem. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn