PHP 비호환성에 대한 해결 방법: 1. "my.cnf"를 변경하여 문자 집합을 지정합니다. 2. "...로 식별된 사용자 'root'@'%' 변경"을 통해 기존 계정 비밀번호를 업데이트합니다. MySQL8.0.
이 기사의 운영 환경: Windows 7 시스템, PHP 버전 7.1, DELL G3 컴퓨터.
PHP와 Mysql8 간의 비호환 문제 요약
Mysql8.0을 설치한 후 원래 PHP와 함께 작업해야 합니다. 그런데 원래 Mysql5.1에서 잘 작동하던 코드에서 갑자기 오류가 발생하는 것 같습니다. 필요합니다. 추가 작업을 수행하십시오.
报错:PDO::__construct(): Server sent charset (255) unknown to the client. Please, report to the developers
온라인 정보에 따르면 Mysql8.0은 기본 문자 집합을 utfmb4로 변경했기 때문에 PHP뿐만 아니라 클라이언트와의 통신을 인식할 수 없습니다. 문자 집합을 지정하려면 my.cnf를 변경해야 합니다.
[client] default-character-set=utf8 [mysql] default-character-set=utf8 [mysqld] collation-server = utf8_unicode_ci character-set-server = utf8 报错:PDO::__construct(): The server requested authentication method unknown to the client [caching_sha2_password]
온라인 정보에 따르면 사용자 신원 인증을 위한 암호화 방법이 호환되지 않아 발생합니다. mysql8.0의 기본 방법은 caching_sha2_password이며, 이전 버전의 암호화 방법은 mysql_native_password입니다. .
권장: "PHP 비디오 튜토리얼"
설정할 암호화 방법을 지정할 수 있습니다:
# 新建用户,使用旧版加密方式设置密码 CREATE USER username@localhost identified with mysql_native_password by 'password'; # 更新已存在的账号密码加密方式 alter user 'root'@'%' identified with mysql_native_password by 'password';
하지만 더 좋은 방법은 기본 구성 줄을 추가하는 것입니다:
[mysqld] default_authentication_plugin = mysql_native_password 报错:Access denied for user 'root'@'localhost' (using password: YES) mysql> GRANT ALL PRIVILEGES ON *.* TO 'oss'@'%'; ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
다른 사용자에게 권한을 추가할 때, 아니요 오류가 보고됩니다. 이유는 실수로 루트 사용자를 삭제했기 때문입니다. 이 문제를 해결하기 위한 많은 문서가 인터넷에 있지만 내가 다시 설정한 루트 사용자는 Grant_priv:Y를 가지고 있지만 여전히 권한을 성공적으로 할당할 수 없습니다. 그게 나에게 두통을 준다.
해결 방법: 다시 설치, Mysql8.0 설치 방법은 기사를 참조하세요.
요약
mysql8.0의 새로운 기능은 무엇입니까? 설명서를 자세히 확인하지는 않았지만 호환성 때문에 먼저 어려움을 겪었습니다. 다행히 이 세 가지 문제를 해결한 후 PHP 프로그램이 성공적으로 실행되었습니다. 끝났습니다. PHP5.1을 PHP7로 업그레이드하겠습니다.
위 내용은 PHP 비호환 문제를 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!