Maison > Article > développement back-end > Que dois-je faire si php se connecte à mysql8 et signale une erreur ?
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".
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
Le soir, un étudiant du groupe a déclaré que php
avait explosé et Je ne l'ai pas sorti pendant deux heures. 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
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.
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. 🎜 🎜🎜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!