>  기사  >  백엔드 개발  >  PHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?

PHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?

藏色散人
藏色散人원래의
2023-01-18 10:28:013622검색

mysql8에 연결하는 PHP에서 보고된 오류에 대한 해결 방법: 1. "/etc/my.cnf"에서 "mysql_native_password" 앞의 주석을 끄십시오. 2. mysql을 입력하고 "mysql_native_password"로 비밀번호를 업데이트하세요.

PHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?

이 튜토리얼의 운영 환경: CentOS 7 시스템, mysql8 버전, DELL G3 컴퓨터

PHP가 mysql8에서 오류를 보고하는 경우에도 어떻게 해야 합니까?

MYSQL8에 대한 PHP 연결 실패에 대한 솔루션

0x01 문제

저녁에 그룹의 한 학생이 php가 폭발했다고 말했는데 작동하지 않았습니다. 두 시간 동안 운동 하지 마세요 . php炸了,两小时没弄出来。
PHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?

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

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

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

PHP가 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

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的方式肯定也可以解决的,于是又去看了下,确实有所发现。
PHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?

确实有新的组件mysql_xdevapi可以支持,而在php7.2.4前无论是php PDO还是php mysqliPHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?
PHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?방법 watch 문제 없습니다. 어쨌든 연결이 계속 실패합니다.

mysqli_error()를 추가해달라고 요청했는데 출력이 없습니다. PHP 관련 구성 요소와 mysql 로그를 살펴봤지만 클라우드이므로 응답이 없습니다. 호스트에 localhost를 127.0.0.1로 설정하려고 했지만 여전히 소용이 없었습니다.

그럼 mysql 버전인 mysql8을 확인해봤는데 아직 mysql5를 사용하시는 분들에게는 너무 어려워서 확인해 봤습니다. mysql8 업데이트를 직접해서 아이를 골랐네요 ㅎㅎ. PHP가 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 code>🎜🎜<a id="0x02__15">🎜0x02 솔루션🎜🎜1. <code>/etc/my.cnf(학생용 centos) >mysql_native_password. 이전 댓글이 꺼졌습니다. 즉, 이전 확인 방법으로 다시 변경하세요: 🎜rrreee🎜2. mysql을 입력하고 mysql_native_password를 사용하여 비밀번호를 업데이트하세요. 🎜rrreee🎜또는 새 사용자를 추가할 수도 있습니다. 🎜rrreee🎜문제가 성공적으로 해결되었습니다. 🎜🎜🎜0x03 Follow-up🎜🎜생각해 보니 php를 사용해서 새로운 인증 방법을 쓸 수는 없지 않나 해서요. php를 사용하면 확실히 해결될 수 있어서 다시 살펴보니 뭔가 발견되었습니다. 🎜 🎜🎜예 과연 새로운 구성 요소 mysql_xdevapi는 지원될 수 있지만 php7.2.4 이전에는 php PDOphp mysqli 모두 새로운 구성 요소를 지원할 수 없었습니다. 확인 방법. 🎜🎜🎜🎜문제가 해결되었으니 앞으로 이 방법은 다시 시도하지 않고 기록해보도록 하겠습니다! 🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜🎜

위 내용은 PHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.