Ste*_*and 2 postgresql configuration postgresql-9.1
这是我的配置:
#postgres.conf:
listen_addresses = 'localhost'
#pg_hba.conf:
local all postgres md5
local all appuser trust
local all devuser trust
local all all peer
Run Code Online (Sandbox Code Playgroud)
我正在使用 C-Library 在本地连接libpq。我的连接字符串是:
host=localhost user=appuser dbname=mydbname port='5432'
但是,除非我的开发人员用户(devuser)(启动与 libpq 链接的应用程序的人)的家中有一个 .pgpass 文件,否则我的可执行文件无法连接,我收到错误 fe_sendauth : no password supplied
正如我所说,如果 .pgpass 文件在这里,那么它连接正常。
我不明白的是:我配置了local all appuser trust。为什么我仍然需要一个 .pgpass 文件?
(这本身并不是一个严重的问题,因为稍后为了安全措施,它将不再位于trust, but md5,所以无论如何我都会拥有 .pgpass 文件。但我想知道)
我可以看到人们可能认为listen_addresses = 'localhost'与身份验证方法有什么关系local。但事实并非如此。我引用手册listen_addresses:
listen_addresses(字符串)
指定服务器侦听来自客户端应用程序的连接的TCP/IP 地址。
以及手册中的pg_hba.conf文件一章:
当地的
此记录匹配使用Unix 域套接字的连接尝试。如果没有这种类型的记录,则不允许 Unix 域套接字连接。
大胆强调我的。
对于通过localhost(TCP/IP、本地环回)的连接,您实际上需要在您的文件中为身份验证方法host输入一个条目pg_hba.conf(而不是用于local)。
| 归档时间: |
|
| 查看次数: |
2072 次 |
| 最近记录: |