Maison  >  Article  >  développement back-end  >  Que dois-je faire si php se connecte à mysql8 et signale une erreur ?

Que dois-je faire si php se connecte à mysql8 et signale une erreur ?

藏色散人
藏色散人original
2023-01-18 10:28:013359parcourir

Solution à l'erreur signalée par PHP lors de la connexion à mysql8 : 1. Désactivez le commentaire devant "mysql_native_password" dans "/etc/my.cnf" 2. Saisissez mysql et mettez à jour le mot de passe avec "mysql_native_password".

Que dois-je faire si php se connecte à mysql8 et signale une erreur ?

L'environnement d'exploitation de ce tutoriel : système CentOS 7, version mysql8, ordinateur DELL G3

Que dois-je faire si php signale même une erreur avec mysql8 ?

Solution à l'échec de la connexion PHP à MYSQL8

Problème 0x01

Le soir, un étudiant du groupe a déclaré que php avait explosé et Je ne l'ai pas sorti pendant deux heures. php炸了,两小时没弄出来。
Que dois-je faire si php se connecte à mysql8 et signale une erreur ?

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

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

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

Que dois-je faire si php se connecte à mysql8 et signale une erreur ?

简单来说,在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的方式肯定也可以解决的,于是又去看了下,确实有所发现。
Que dois-je faire si php se connecte à mysql8 et signale une erreur ?

确实有新的组件mysql_xdevapi可以支持,而在php7.2.4前无论是php PDO还是php mysqliQue dois-je faire si php se connecte à mysql8 et signale une erreur ?
Que dois-je faire si php se connecte à mysql8 et signale une erreur ?Comment à watch Il n'y a pas de problème, la connexion continue d'échouer de toute façon.

Je lui ai demandé d'ajouter mysqli_error() mais il n'y a eu aucune sortie. J'ai regardé les composants liés à PHP et les journaux mysql mais il n'y a eu aucune réponse puisqu'il s'agit d'un cloud. host, j'ai également essayé de mettre localhost sur 127.0.0.1, toujours en vain.

Ensuite, j'ai vérifié la version mysql, mysql8, c'était trop difficile pour les personnes qui utilisent encore mysql5, alors je l'ai vérifié. De première main la mise à jour de mysql8, donc j'ai récupéré l'enfant, haha. " Simple Par exemple, dans mysql8, une nouvelle méthode de vérification caching_sha2_password est apparue. Cette méthode est devenue le nouveau mécanisme de vérification. Elle est également utilisée par défaut lors de la configuration des mots de passe. le mysql_native_password d'origine est remplacé. C'est pourquoi php ne peut pas se connecter.

Pour des informations détaillées, veuillez consulter ce lien :
https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password code>🎜🎜<a id="0x02__15">🎜0x02 Solution🎜🎜1. Dans <code>/etc/my.cnf (centos pour les étudiants) >Mysql_native_password. Le commentaire précédent est désactivé. Autrement dit, revenez à l'ancienne méthode de vérification : 🎜rrreee🎜2. Entrez mysql et mettez à jour le mot de passe en utilisant mysql_native_password. 🎜rrreee🎜Ou vous pouvez ajouter un nouvel utilisateur. 🎜rrreee🎜Le problème est résolu avec succès. 🎜🎜🎜Suivi 0x03🎜🎜Après réflexion, je ne peux pas utiliser php pour utiliser la nouvelle méthode de vérification Alors ce n'est pas inutile, donc je. utiliser php peut certainement être résolu, alors j'ai jeté un nouveau coup d'œil et j'ai trouvé quelque chose. 🎜Que dois-je faire si php se connecte à mysql8 et signale une erreur ? 🎜🎜Oui en effet Le nouveau composant mysql_xdevapi peut être pris en charge, mais avant php7.2.4 ni php PDO ni php mysqli ne pouvaient prendre en charge les nouveaux composants. méthodes de vérification. 🎜🎜🎜🎜Le problème étant résolu, je n'essaierai plus cette méthode, je la réessayerai lorsqu'elle sera utilisée à l'avenir et je l'enregistrerai ! 🎜🎜Apprentissage recommandé : "🎜Tutoriel vidéo PHP🎜"🎜🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn