【问题标题】:unable to run SQL queries in MySQL using phpseclib无法使用 phpseclib 在 MySQL 中运行 SQL 查询
【发布时间】:2015-07-24 17:29:39
【问题描述】:

我可以成功连接到服务器并登录到 MySQL 数据库。但现在我需要在数据库表上运行一些 SQL 查询,但遇到错误:ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)。

我不确定 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"');

【问题讨论】:

  • 这是因为您可能输入了错误的用户名或密码。
  • 为什么要使用 exec 来运行 MySQL 查询?
  • @Kyle:他希望对 DB 服务器和 Web 服务器之间的连接进行加密。 SSH (虽然不寻常)并不是最糟糕的方法。
  • 有趣。但是,如果您只是通过 SSL 运行脚本,它不会做同样的事情吗?这样你就不必使用 exec()。

标签: php mysql phpseclib


【解决方案1】:

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

-pDataBaseName

应该是:

-pPassword DataBaseName

【讨论】:

    【解决方案2】:

    这不是问题的答案 - 这已经给出 (-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 套接字连接,这显然行不通

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-16
      • 2020-09-04
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多