使用 PHP 和 SSH 与外部数据库交互

问题描述

我被困在需要寻求帮助的地方,因为这是我第一次使用 PHP 处理外部数据库。运行 PHP 脚本时出现以下错误

MysqLi::__construct(): (HY000/1045): Access denied for user 'user'@'localhost' (using password: YES)

我试图执行的 PHP 脚本:

 shell_exec("ssh -f -L 3307:127.0.0.1:3306 root@mydomain.com sleep 60 >> logfile");
    $MysqLi = new MysqLi($servername,$username,$password,$dbname);
     $sql = $MysqLi->prepare("INSERT INTO users (name,email,password,first_name,last_name,cell_no) VALUES (?,?,?)");
     $sql->bind_param("ssssss",$loginUsername,$emailAddress,$sitePass,$firstName,$lastName,"cellNr");
     $sql->execute();

如有任何帮助,我们将不胜感激。

解决方法

检查您的 my.cnf 或 my.ini 文件,看看您是否设置了“绑定地址”参数。如果是,将其注释掉并重新启动 mySQL。

请注意,您的错误发生在第 2 行。您的代码的第 3-5 行甚至没有被执行。要么您输入了错误的密码、错误的用户名,要么您的 mySQL 服务器不允许远程连接。

可能重复:

MySQL: How to allow remote connection to mysql

虽然我有点困惑,当您似乎在访问 127.0.0.1 时,为什么在这里使用 shell_exec。如果您的 MySQL 实例与您的 php 解释器在同一台服务器上,那么您绝对不需要该行。只需将 $servername 设置为“localhost”或“127.0.0.1”。