mysql8에 연결하는 PHP에서 보고된 오류에 대한 해결 방법: 1. "/etc/my.cnf"에서 "mysql_native_password" 앞의 주석을 끄십시오. 2. mysql을 입력하고 "mysql_native_password"로 비밀번호를 업데이트하세요.
이 튜토리얼의 운영 환경: CentOS 7 시스템, mysql8 버전, DELL G3 컴퓨터
PHP가 mysql8에서 오류를 보고하는 경우에도 어떻게 해야 합니까?
MYSQL8에 대한 PHP 연결 실패에 대한 솔루션
저녁에 그룹의 한 학생이 php
가 폭발했다고 말했는데 작동하지 않았습니다. 두 시간 동안 운동 하지 마세요 . 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
방법 watch 문제 없습니다. 어쨌든 연결이 계속 실패합니다.
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 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 PDO
나 php mysqli
모두 새로운 구성 요소를 지원할 수 없었습니다. 확인 방법. 🎜🎜🎜🎜문제가 해결되었으니 앞으로 이 방법은 다시 시도하지 않고 기록해보도록 하겠습니다! 🎜🎜추천 학습: "🎜PHP 비디오 튜토리얼🎜"🎜🎜위 내용은 PHP가 mysql8에 연결하고 오류를 보고하면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!