问题描述
我被困在需要寻求帮助的地方,因为这是我第一次使用 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”。