Heim  >  Artikel  >  Backend-Entwicklung  >  Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?

Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?

藏色散人
藏色散人Original
2023-01-18 10:28:013647Durchsuche

Lösung für den Fehler, der von PHP beim Herstellen einer Verbindung zu mysql8 gemeldet wird: 1. Deaktivieren Sie den Kommentar vor „mysql_native_password“ in „/etc/my.cnf“. 2. Geben Sie mysql ein und aktualisieren Sie das Passwort mit „mysql_native_password“.

Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?

Die Betriebsumgebung dieses Tutorials: CentOS 7-System, MySQL8-Version, DELL G3-Computer

Was soll ich tun, wenn PHP überhaupt einen Fehler mit MySQL8 meldet?

Lösung für PHP-Verbindungsfehler zu MYSQL8

0x01 Problem

Am Abend sagte ein Schüler in der Gruppe, dass php explodierte und das passierte Ich werde zwei Stunden lang nicht trainieren. php炸了,两小时没弄出来。
Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?

怎么看都没啥问题,反正一直连接失败。

让他加了mysqli_error()也没输出,看了PHP相关组件,看了mysql日志都没反应,由于是云主机,还尝试把localhost改成127.0.0.1,仍然无果。

然后去看了下mysql版本,mysql8,对于现在还在用mysql5的人简直太难了,于是去查了一手mysql8的更新情况,于是就把孩子捞起来了,哈哈。

Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?

简单来说,在mysql8时,出现了一种新的验证方式caching_sha2_password,这个方式成为了新的验证机制,默认在配置密码的时候也是用的这种方式进行处理的,原有的mysql_native_password被替换掉了。这就是为什么php连不上的原因。

详细信息可以看这个链接:
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password

0x02 解决

1、在/etc/my.cnf(学生用的centos)中将mysql_native_password.前面的注释关掉。即改回老的验证方式:

[mysqld]
default_authentication_plugin=mysql_native_password

2、进入mysql中,以mysql_native_password的方式更新密码即可。

mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
mysql>flush privileges;

或者可以新增加一个用户。

mysql>CREATE USER 'test'@'%' IDENTIFIED WITH mysql_native_password BY 'password';
mysql>GRANT ALL PRIVILEGES ON *.* TO 'test'@'%';
mysql>flush privileges;

这样问题就成功解决了。

0x03 后续

后来想了下,总不能用php就不能使用新验证方式阿,那这不是鸡肋了,所以以php的方式肯定也可以解决的,于是又去看了下,确实有所发现。
Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?

确实有新的组件mysql_xdevapi可以支持,而在php7.2.4前无论是php PDO还是php mysqliWas soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?.
Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?Wie zu watch Es gibt kein Problem, die Verbindung bricht sowieso immer wieder ab.

Ich habe ihn gebeten, mysqli_error() hinzuzufügen, aber es gab keine Ausgabe. Ich habe mir PHP-bezogene Komponenten und mysql-Protokolle angesehen, aber es gab keine Antwort, da es sich um eine Cloud handelt host, ich habe auch versucht, localhost auf 127.0.0.1 zu setzen, immer noch ohne Erfolg.

Dann habe ich die mysql-Version überprüft, mysql8. Es war zu schwierig für Leute, die noch mysql5 verwenden, also habe ich es mir angesehen. Den Update-Status von mysql8 aus erster Hand, also habe ich das Kind abgeholt, haha. Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?

Einfach Beispielsweise wurde in mysql8 eine neue Überprüfungsmethode caching_sha2_password eingeführt. Diese Methode wird standardmäßig auch bei der Konfiguration von Passwörtern verwendet. das ursprüngliche mysql_native_password wird ersetzt. Aus diesem Grund kann php keine Verbindung herstellen. 🎜🎜Detaillierte Informationen finden Sie unter diesem Link:🎜https://dev.mysql.com/doc/refman/8.0/en/upgrading-from- previous-series.html#upgrade-caching-sha2-password code>🎜🎜<a id="0x02__15">🎜0x02 Lösung🎜🎜1. In <code>/etc/my.cnf (centos für Studenten) >Mysql_native_password. Der vorherige Kommentar ist deaktiviert. Das heißt, wechseln Sie zurück zur alten Verifizierungsmethode: 🎜rrreee🎜2 Geben Sie mysql ein und aktualisieren Sie das Passwort mit mysql_native_password. 🎜rrreee🎜Oder Sie können einen neuen Benutzer hinzufügen. 🎜rrreee🎜Das Problem wurde erfolgreich gelöst. 🎜🎜🎜0x03 Follow-up🎜🎜Nachdem ich darüber nachgedacht habe, kann ich php nicht verwenden, um die neue Verifizierungsmethode zu verwenden. Dann ist das nicht nutzlos, also habe ich use php kann definitiv gelöst werden, also habe ich noch einmal nachgeschaut und etwas gefunden. 🎜Was soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?. 🎜🎜Y Es ist in der Tat Die neue Komponente mysql_xdevapi kann unterstützt werden, aber vor php7.2.4 konnten weder php PDO noch php mysqli sie unterstützen . Unterstützen Sie neue Verifizierungsmethoden. 🎜🎜🎜🎜Da das Problem gelöst ist, werde ich diese Methode nicht noch einmal ausprobieren. Ich werde es in Zukunft noch einmal versuchen und es aufzeichnen! 🎜🎜Empfohlenes Lernen: „🎜PHP-Video-Tutorial🎜“🎜🎜

Das obige ist der detaillierte Inhalt vonWas soll ich tun, wenn PHP eine Verbindung zu MySQL8 herstellt und einen Fehler meldet?. 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