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“.
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
Am Abend sagte ein Schüler in der Gruppe, dass php
explodierte und das passierte Ich werde zwei Stunden lang nicht trainieren. php
炸了,两小时没弄出来。
怎么看都没啥问题,反正一直连接失败。
让他加了mysqli_error()
也没输出,看了PHP相关组件,看了mysql
日志都没反应,由于是云主机,还尝试把localhost
改成127.0.0.1
,仍然无果。
然后去看了下mysql
版本,mysql8
,对于现在还在用mysql5
的人简直太难了,于是去查了一手mysql8
的更新情况,于是就把孩子捞起来了,哈哈。
简单来说,在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
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;
这样问题就成功解决了。
后来想了下,总不能用php
就不能使用新验证方式阿,那这不是鸡肋了,所以以php
的方式肯定也可以解决的,于是又去看了下,确实有所发现。
确实有新的组件mysql_xdevapi
可以支持,而在php7.2.4
前无论是php PDO
还是php mysqli
.
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.
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. 🎜. 🎜🎜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!