您好,我正在尝试运行发送给我的网站,但这样做后出现此错误



 connect to PostgreSQL server: FATAL: no pg_hba.conf entry for host "4X.XXX.XX.XXX", user "userXXX", database "dbXXX", SSL off in C:\xampp\htdocs\xmastool\index.php on line 37
 这是我的pg_hba .conf文件。



 # TYPE  DATABASE        USER            ADDRESS                 METHOD
# IPv4 local connections:
local dbXXX userXXX md5
host    dbXXX  userXXX  XX.XXX.XXX.XXX           md5
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
# Allow replication connections from localhost, by a user with the
# replication privilege.
#host    replication     postgres        127.0.0.1/32            md5
#host    replication     postgres        ::1/128                 md5
 




,但是这样做之后,错误仍然存​​在。我几次重新启动了XAMPP服务器,但没有任何更改。
预先感谢

评论

您是否重启了PostgreSQL自身,而不仅仅是Web服务器?尝试SELECT pg_reload_conf()。

#1 楼

在您的postgresql.conf中添加或编辑以下行:

listen_addresses = '*'


将以下行添加为pg_hba.conf的第一行。它允许使用加密密码的所有用户访问所有数据库:

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5

service postgresql restart或等效的命令添加后重新启动Postgresql。

评论


请注意,要使此方法起作用,必须为用户设置密码:sudo -u <用户名> psql postgres,然后在结果sql提示符下的\ password将提示您设置一个。

– ijoseph
18年5月30日在21:54

添加此选项后,别忘了重新启动postgresql:service postgresql restart

– ammills01
18-10-24在22:50

如果您需要一些额外的安全性来限制到私有域的连接(例如在办公室内部,而不是Internet的其余部分),则可以将第一个数字更改为10、172或192以匹配您的网络:例如172.0。 0.0 / 0而不是0.0.0.0/0

–内特·万纳(Nate Wanner)
19年2月28日在13:49

您还需要添加地址为:: 0/0的行,否则来自IPv6地址的连接仍将被拒绝。

– Herohtar
19-10-18在21:31



请注意,这在安全性方面是最糟糕的做法。尝试使事情精确运行,而不仅仅是避免问题。因此,添加您的服务器IP而不是0.0.0.0/0或至少缩小IP类别

– Mehdi LAMRANI
19-10-19在19:19

#2 楼

此解决方案适用于IPv4 / IPv6
nano /var/lib/pgsql/data/pg_hba.conf
最后添加
host all all      ::1/128      md5
host all postgres 127.0.0.1/32 md5

,然后重新启动postgresql服务
/etc/init.d/postgresql restart


评论


仅在我使用:: 0/0时有效

–丹格尔
19/12/14在4:11

#3 楼

我解决此问题的方法是:

pg_hba.conf中添加以下行:

hostnossl    all          all            0.0.0.0/0  trust        


考虑到这是您不希望使用的POC(概念验证),因此我在Azure的VM中的Centos 7.3和Postgres 9.5上运行了该实例在您的实际产品环境中无需SSL即可连接。

要连接到实例,我在macOS Sierra上使用pgAdmin4。

评论


不仅SSL ...在任何未经概念证明且可通过网络访问的事物上,您都不信任连接,还需要进行一些身份验证。

– joanolo
17年5月5日在6:44

#4 楼

全新安装Postgres 9.5,Ubuntu。

键是本地连接类型,因为psql使用域套接字连接。


# TYPE DATABASE USER CIDR-ADDRESS  METHOD
local all all md5
host  all  all 0.0.0.0/0 md5


#5 楼



pg_hba.conf的底部添加以下行:

hostnossl all all 0.0.0.0/0 md5


postgresql.conf中添加/修改该行:

listen_addresses = '*'


确保正在连接的用户具有密码:(例如,名为postgres的连接用户)

a。使用psql用户帐户运行以下postgres命令:

sudo -u postgres psql postgres

b。设置密码:

# \password postgres




评论


不要将信任用于远程连接

–eckes
18年15月15日在19:57

#6 楼

Debian用户说明。

以posgres用户身份登录:

$ sudo su - postgres


通过查询数据库来获取pg_hba.conf的位置:

$ psql -c "SHOW hba_file;"

              hba_file               
-------------------------------------
/etc/postgresql/11/main/pg_hba.conf
(1 row)


打开pg_hba.conf:

nano /etc/postgresql/11/main/pg_hba.conf


在显示“在此处放置实际配置”的位置添加配置:

# TYPE DATABASE USER CIDR-ADDRESS  METHOD
host  all  all 0.0.0.0/0 md5


注销到用户:

$ exit
logout


重新启动postgres服务器以使更改生效:

$ sudo systemctl restart postgresql


#7 楼

尝试使用SSH隧道连接到本地数据库时,我遇到了相同的错误。我通过将主机名从localhost更改为127.0.0.1来解决了这个问题。

#8 楼

下面对我有用:(pg_hba.conf)

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only     
local   all             all                                     md5
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
host    all             all             0.0.0.0/0               trust



trust

无条件允许连接。此方法允许
可以连接到PostgreSQL数据库服务器的任何人以他们希望的任何
PostgreSQL用户身份登录,而无需密码或任何其他身份验证。 /> md5

要求客户端提供双MD5哈希密码进行
身份验证。

评论


谢谢男人,它为我工作,我只需要用不使用密码的信任替换所有的METHOD

–穆罕默德
6月15日4:47

#9 楼

查找正确的配置文件:

su - postgres -c "psql -t -P format=unaligned -c 'show hba_file';"


在文件末尾添加以下内容:

local all all peer


然后重新启动PostgreSQL应用程序:

/bin/systemctl restart postgresql*.service


#10 楼

就我而言,我必须添加错误信息建议的确切行。无法通过添加具有所有IP的“所有”用户作为规则来绕过它。现在就像:

CentOS 7上的PosgreSQL 10.5。

# IPv4 local connections:
host    all             all             127.0.0.1/32                    md5
host    <db_name>       postgres        <my_client_machine_ip>/32       md5


#11 楼

就我而言,我遇到了无法编辑服务器上的任何conf文件(.NET连接到DigitalOcean上的托管数据库)的情况,因此无法选择其他答案。
主机提供了我一个postgresql://连接URL,最后有一个?sslmode=选项。在将"SSL Mode=Prefer;Trust Server Certificate=true;"添加到翻译后的.NET connectionString中之前,我遇到了完全相同的错误。字符串而不是服务器配置。

评论


我有同样的问题。当使用Npgsql连接时,如果数据库需要SSL连接,而您从连接字符串中忽略它,则会收到一个奇怪的pg_hfa.conf错误。

–JamesHoux
12月8日19:55

#12 楼

它仅对我有效,仅添加以下配置:

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
host    all             all             0.0.0.0/0               md5
# IPv6 local connections:
host    all             all             ::1/128                 md5
host    all             all             0.0.0.0/0               md5


#13 楼

根据https://docs.bitnami.com/aws/apps/noalyss/administration/configure-pgadmin/的链接。

对于Windows上的PgAdmin 4。我在下面添加了这些行

pg_hba.config:

host all all all md5


,并修改了postgresql.config: br />

#14 楼

只需在配置文件中写入以下序列:

const 
  pg                = require('pg'),
config          = require('./db-config'),
    dbOption    = {
      host    : ,
      port    : ,
      user    : ,
      password  :,
      database  : 
    },

  pool          = new pg.Pool(dbOption)
  pg.defaults.ssl = true;


就这些了。<​​br />文件db-config包含主机,用户,密码和数据库。有了这个小小的改动,它就可以在本地和通过服务(Heroku)中完美运行。经过全面测试。

评论


此db-config是什么(和哪里)?它是XAMPP配置文件吗?

–超立方体ᵀᴹ
17年12月12日在16:14