MySQL PHP with MySQL 8.0+ 错误:服务器请求客户端未知认证方法
在使用MySQL 8.0版本及以上的时候,经常会出现以下错误信息:
这是因为MySQL 8.0以上版本默认使用的是caching_sha2_password加密方式,而PHP的mysqli扩展和PDO_MySQL扩展并不支持这种加密方式,只支持mysql_native_password。
以下是两种解决方案:
阅读更多:MySQL 教程
方案一:更改MySQL用户的加密方式
可以通过以下命令更改MySQL用户的加密方式:
比如:
方案二:在PDO中指定加密方式
可以在PDO中指定使用mysql_native_password加密方式,具体代码如下:
其中PDO::MYSQL_ATTR_INIT_COMMAND用于设置编码格式,PDO::MYSQL_ATTR_SSL_VERIFY_SERVER_CERT用于是否开启SSL验证,而PDO::MYSQL_ATTR_SSL_KEY、PDO::MYSQL_ATTR_SSL_CERT、PDO::MYSQL_ATTR_SSL_CA用于设置SSL认证的证书。
以上就是针对MySQL PHP with MySQL 8.0+错误的解决方案,希望能够对大家有所帮助。
总结
在使用MySQL 8.0以上版本时,由于默认使用的是caching_sha2_password加密方式,因此会出现MySQL PHP with MySQL 8.0+错误。通过更改MySQL用户的加密方式或在PDO中指定使用mysql_native_password加密方式,可以很好地解决这个问题。