如何将pgAdmin III(Windows)连接到postgresql(虚拟盒子中的Linux)



我的虚拟Linux机器上有一个postgresql恶魔,刚刚在Windows机器上安装了pgAdmin III。现在我想配置第一个连接。

到目前为止我做了什么:

  • 我编辑了/etc/postgresql/9.1/main/pg_hba.conf并添加了一行,使恶魔接受来自我的Windows机器的连接:
    host all all 192.168.123.45/32 md5
  • 我为系统用户设置了一个外壳密码短语postgressudo passwd postgres
  • 编辑:这似乎无关紧要
    /usr/share/postgresql/9.1/pg_service.conf.sample复制到/etc/postgresql-common/pg_service.conf并取消注释示例服务,给了我
    [后置]
    dbname=postgres
    用户=邮局
  • 编辑:这似乎无关紧要
    我在/etc/environment中放了一行以指向pgservice.conf文件:

    PGSERVICEFILE=/etc/postgresql-common/pg_service.conf(这有效;当我复制 PuTTY 会话时,它有这个变量)
  • 每次更改后,我都重新启动了数据库服务器:
    sudo /etc/init.d/postgresql restart
  • 最后,我重新启动Linux盒子,

服务器似乎已成功重新启动:

[ ok ] Restarting PostgreSQL 9.1 database server: main.

但是,当我尝试连接到该服务时,pgAdmin III 会给我一条错误消息:
连接到服务器时出错:找不到服务"postgres"的定义。

dmesg | grep postgres给了我一行:

[   18.054965] postgres (2242): /proc/2242/oom_adj is deprecated, please use /proc/2242/oom_score_adj instead.

我不知道postgresql是否使用我的pq_service.conf,或者其他任何问题; 任何帮助都值得赞赏......

编辑:我最初的问题"How can I know whether postgresql uses my pg_service.conf file?"似乎得到了回答——它根本没有。 我仍然无法连接;但是现在问题不再与错误消息匹配。

我从"新服务器注册"数据中删除了"服务"条目。现在我收到另一个错误 - 类似于"用户的密码身份验证>>postgres<<失败"。我很确定密码是正确的 - 我只是设置了它...我通过从authorized_keys文件中注释掉我的 ssh 密钥来测试它。

我很乐意连接我的 ssh 密钥,但这似乎也很困难。 使用 PuTTY,我的密钥取自选美比赛,并且我登录没有任何问题;pgAdmin 谈论"SSH 隧道",但我通常不需要这台本地机器的隧道......

无论如何,我试图创建一个隧道。

  • 普特伊会议:
    • 源端口5432
    • 目的地是my-vbox.host.name:5432
  • 在 pgAdmin 中,"SSH 隧道":
    • 用户名postgres
    • 使用标识文件
    • 隧道主机localhost →错误:
      "SSH error: Could not connect to socket with error code 10051"
    • 隧道主机localhost:5432 →错误:
      "SSH error: Unable to resolve host: localhost:5432"
    • 隧道主机127.0.0.1:5432 →错误:
      "SSH error: Unable to resolve host: 127.0.0.1:5432"

这到底应该如何配置?!

我终于设法以数据库用户tobias的身份进行连接(我从来没有遇到过使用psql进行本地连接的问题)。

# sudo -u postgres psql postgres
psql (9.1.9)
Type "help" for help.
postgres=# du
                             List of roles
 Role name |                   Attributes                   | Member of
-----------+------------------------------------------------+-----------
 postgres  | Superuser, Create role, Create DB, Replication | {}
 tobias    | Superuser                                      | {}
postgres=# ALTER USER tobias WITH PASSWORD 's3cr3t';
ALTER ROLE

完成此操作后,我可以按照tobias连接,使用刚刚设置的密码。"维护数据库"恰好是template1;我没有试图改变这一点。

供进一步参考 - 我在 /etc/postgresql/9.1/main/postgresql.conf 中激活了log_connections并观看了日志:

sudo tail -f /var/log/postgresql/postgresql-9.1-main.log

最新更新