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

时间:2015-07-24 17:29:40

标签: php mysql 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"');

2 个答案:

答案 0 :(得分:0)

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

delete(previous)
previous := current
current := new()

应该是:

-pDataBaseName

答案 1 :(得分:0)

这不是问题的答案 - 已经给出了(-p)。但是,如果评论太长,请让我详细说明性能问题:

每次脚本运行时都会连接一个新的SSH隧道,这是相当重的 - CPU级别,但最重要的是延迟。

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

请注意:您必须使用127.0.0.1,而不是127.0.0.1,因为这会尝试使用unix套接字连接,这显然无法正常工作