gpt4 book ai didi

postgresql - 使用 pgadmin 连接到远程服务器

转载 作者:行者123 更新时间:2023-11-29 13:04:32 26 4
gpt4 key购买 nike

我正在使用来自 Linode 的教程:https://library.linode.com/databases/postgresql/pgadmin-macos-x将本地计算机上的 PGAdmin 连接到远程服务器上的数据库。

它提供了下面复制的脚本,我应该通过这样做来运行

chmod +x postgresql-tunnel.pl
./postgresql-tunnel.pl start

但是,当我这样做时,我在终端中收到此错误消息:

michael$ ./postgresql-tunnel.pl start
michael@192.XXX.XXX.XXX's password:
bind: Address already in use
channel_setup_fwd_listener: cannot listen to port: 5433
Could not request local forwarding.

来自 pg admin 的错误消息

The server doesn't accept connections: the connection library reports 
could not connect to server: Connection refused Is the server running on host "localhost" (::1) and accepting TCP/IP connections on port 5433?

我不确定这是我必须在本地 postgres 安装上还是在远程服务器上更改的设置。

你能提供一些指导吗?

顺便说一句,当我尝试连接时,我的本地服务器正在运行。

这些是我用于我的 pgadmin 连接的设置,不同的是它的用户名是“michael”而不是“allison”https://dl.dropboxusercontent.com/u/10328969/pgadmin.png

请注意,按照此 SO 问题 Unable to connect PostgreSQL to remote database using pgAdmin 中的说明进行操作, 我做到了

/etc/postgresql/9.1/main/postgresql.conf:

listen_addresses = '*'

/etc/postgresql/9.1/main/pg_hba.conf:

host all all 0.0.0.0/0 md5

并重新启动了 postgres 服务器,但我仍然收到该错误消息。

你能建议我如何让连接正常工作吗?

连接脚本

#!/usr/bin/perl

# PostgreSQL Tunnel Tool for Mac OS X and Linux
# Copyright (c) 2010 Linode, LLC
# Author: Philip C. Paradis <pparadis@linode.com>
# Usage: postgresql-tunnel.pl [start|stop]
# Access a PostgreSQL database server via an SSH tunnel.

$local_ip = "127.0.0.1";
$local_port = "5433";
$remote_ip = "127.0.0.1";
$remote_port = "5432";
$remote_user = "michael";
$remote_host = "192.XXX.XXX.XXX";

$a = shift;
$a =~ s/^\s+//;
$a =~ s/\s+$//;

$pid=`ps ax|grep ssh|grep $local_port|grep $remote_port`;
$pid =~ s/^\s+//;
@pids = split(/\n/,$pid);
foreach $pid (@pids)
{
if ($pid =~ /ps ax/) { next; }
split(/ /,$pid);
}

if (lc($a) eq "start")
{
if ($_[0]) { print "Tunnel already running.\n"; exit 1; }
else
{
system "ssh -f -L $local_ip:$local_port:$remote_ip:$remote_port $remote_user\@$remote_host -N";
exit 0;
}
}
elsif (lc($a) eq "stop")
{
if ($_[0]) { kill 9,$_[0]; exit 0; }
else { exit 1; }
}
else
{
print "Usage: postgresql-tunnel.pl [start|stop]\n";
exit 1;
}

最佳答案

在脚本中指定不同的本地端口。指定的端口已被其他东西使用,可能是在端口 5433 上运行的本地 PostgreSQL。

这实际上只是一个围绕 SSH 隧道的玩具包装器。就个人而言,我倾向于在需要时直接启动 ssh 隧道,或者 ssh 进入远程机器并在本地使用 psql

关于postgresql - 使用 pgadmin 连接到远程服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17937615/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com