问题:使用软件远程连接数据库没有问题,但是PHP连接缺出现了问题。
环境:php7 + mysql8 + centos
使用数据库操作软件是可以正常连接的,可以确定我的数据库在设置账号密码以及相关远程权限问题是没有问题的,但php远程连接就是连接不上。
那么就只有两种可能,PHP连接到库过程中使用的协议或者加密等问题,还有一种可能是数据库与php使用的协议问题。
我的错误提示(翻译):服务器请求客户端未知的身份验证方法
通过查询,这通常归因于你的mysql数据库正在使用的身份验证插件。默认情况下,出于某种原因,mysql 8默认插件是auth_socket。而应用程序大多数时候都希望使用密码登录您的数据库。所以我们需要修改数据库默认身份验证插件。
1.以root身份登录到mysql
2.MySQL设置。编辑my.cnf文件并将此设置放在mysqld部分中:
[mysqld]
default_authentication_plugin= mysql_native_password
保存重启mysql服务。
3.运行此sql命令:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;
用root密码替换’password’。如果您的应用程序未使用root用户登录到您的数据库,请将上述命令中的“root”用户替换为您的应用程序使用的用户。
《FLUSH PRIVILEGES》上述命令将实现默认认证机制的更改。