繁体   English   中英

无法使用phpseclib在MySQL中运行SQL查询

[英]unable to run SQL queries in MySQL using phpseclib

我可以成功连接到服务器并登录到MySQL数据库。 但是现在我需要在数据库表上运行一些SQL查询,但是遇到错误:ERROR 1045(28000):用户'root'@'localhost'的访问被拒绝(使用密码:是)。

我不确定SQL查询的语法是否正确? 另外,我每次需要运行SQL查询时都需要连接到服务器吗? 请提供一些建议。 谢谢。

 /* SUCCESS */
 $ssh = new Net_SSH2('XX.XXX.XX.XXX');
    if (!$ssh->login('root', 'password')) {
         exit('Login Failed');
      }

 echo $ssh->exec('pwd');

  /* SUCCESS */
  if (!$ssh->exec('mysql -h localhost -u root -pDataBaseName \r\n')){
        exit('Login to MySQL Failed');
  }else{
    echo "Login to MySQL Success";
   }

  /* ERROR - facing error in this code*/
   echo $ssh->exec('mysql -h localhost -u root -pDataBaseName -e "SELECT * FROM cmu_util_all"');

有趣地使用php和mysql(肯定是非常规的)。 有一种更简单的方法:在PDO上阅读: http : //php.net/manual/en/ref.pdo-mysql.php关于当前的登录问题:

-pDataBaseName

应该:

-pPassword DataBaseName

这不是问题的答案-已经给出了( -p )。 但是,对于评论太久了,让我详细介绍一下性能问题:

每次脚本运行时,都要连接一个新的SSH隧道,这非常繁琐-从CPU角度考虑,但在所有延迟方面则最重要。

因此,我建议您尝试将-L参数用于SSH并运行系统范围的ssh -L 127.0.0.1:3306:127.0.0.1:3306 root@... ,然后使用标准的MySQL工具(例如PDO)连接到已经在127.0.0.1隧道传输MySQL。

注意:您必须使用127.0.0.1 ,而不是localhost ,因为这将尝试使用unix套接字连接,这显然不起作用

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM