2011-05-12 154 views
1

我想通过端口转发连接到我的远程Mysql服务器。不幸的是,我的托管服务提供商没有在服务器上安装php_ssh2,所以我必须通过phpseclib库。到目前为止,我能够做的事情:
1.连接到服务器使用Net_SSH2
$ssh = new Net_SSH2('xx.xxx.xx.xx');
if (!$ssh->login('user', 'password')) {
exit('Login Failed');
}

如果我做 echo $ssh->exec('ls -la');Phpseclib连接MYSQL服务器

它获取我们已经成功地连接目录列表说明问题。

,如果我跑

  1. echo $ssh->exec('echo "select * from table where company_id=\"15\";" | mysql');

它触发:
标准输入:是不是tty ERROR 1045(28000):拒绝访问用户 '用户' @ 'localhost' 的(使用密码:NO)

  1. 如果我做
    echo $ssh->exec('ssh -f -L 3307:localhost:3306 [email protected] sleep 60 >> logfile');

它永远运行,然后导致从服务器没有响应错误。

我拉我的头发。帮帮我!!!!!

回答

1

也许试试这个?:

echo $ssh->exec('echo "select * from table where company_id=\"15\";" | mysql -u username -password=password database'); 

正如它可能在等待,要输入密码。

+0

@peter stdin:不是tty 错误1045(28000):拒绝用户'用户'@'localhost'的访问(使用密码:是) – Rahi 2011-05-20 13:41:26

+0

我无法帮助拒绝Access,但对于“ stdin:不是tty“...尝试在$ ssh-> exec()之前调用'$ ssh-> enablePTY()'' – neubert 2013-08-20 04:22:50