我的虚拟Linux机器上有一个postgresql
恶魔,刚刚在Windows机器上安装了pgAdmin III。现在我想配置第一个连接。
到目前为止我做了什么:
- 我编辑了
/etc/postgresql/9.1/main/pg_hba.conf
并添加了一行,使恶魔接受来自我的Windows机器的连接:
host all all 192.168.123.45/32 md5
- 我为系统用户设置了一个外壳密码短语
postgres
(sudo 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