如何通过开放的ssh隧道使用php连接到postgres数据库?

时间:2017-09-01 17:19:52

标签: php postgresql ssh

我需要使用PHP连接到远程服务器上的postgres数据库。我在本地机器上打开了一个SSH隧道,本地端口8000.隧道似乎工作正常。

当我尝试使用PHP连接到数据库时出现问题。以下代码:

$ConnectionString = "host=127.0.0.1:8000  user=username password=passphrase dbname=databasename sslmode=require port=5432";
pg_connect($ConnectionString);

产生以下错误:

Warning: pg_connect(): Unable to connect to PostgreSQL server: could not translate host name "127.0.0.1:8000" to address: Unknown host in [path]\mappage.php on line 22
Not connected 

那么,我如何通过SSH打开数据库连接?

对于它的价值,我可以使用SSH连接到PGAdmin的远程PostgreSQL数据库。

2 个答案:

答案 0 :(得分:0)

正如in the manual所写,它应该是:

$ConnectionString = "host=127.0.0.1 port=8000  user=username password=passphrase dbname=databasename sslmode=require";

您有两次端口,一次不正确。

答案 1 :(得分:0)

设置隧道后,即可通过127.0.0.1连接到数据库。例如(MySQL示例):

ssh -L 127.0.0.1:8000:127.0.0.1:5432 sshuser@example.com

之后,我数据库的连接参数为:

Host: 127.0.0.1 (localhost would try to connect to socket)
Port: 8000
User: username
Pass: passphrase