我有一个非常奇怪的行为。我正在建立一个网站,其中Apache和mysql在两台服务器上分开。
服务器A是我的PHP 7.2.10 RedHat 7.5服务器。 服务器B是我的MySQL 8.0.12 RedHat 7.5服务器。
我正在尝试通过PHP从服务器A连接到服务器B。 在apache日志中,连接时列出了以下错误:
mysqli_connect(): (HY000/1045): Access denied for user XYZ
SQLException (code=1045, user=UNKNOWN)
奇怪的是,当我通过服务器A上的cli在服务器B上连接(并在成功建立后立即关闭连接)时,一切正常。无需更改任何代码或配置,从那里进行的连接也可以像PHP中的charm一样工作,直到在服务器B上重新启动mysql deamon为止。
因此,我可以消除错误的用户名/密码和防火墙或原则上可能影响连接的任何机会。
看起来服务器A必须建立到服务器B的隧道(通过cli)以验证用户凭据,然后从那里开始允许连接(通过PHP或cli),直到重新启动mySQL服务器并且“忘记了”用户凭证也适用于PHP连接。
任何想法如何解决此问题? 在这个问题上寻求帮助将非常好。
thx