нет записи pg_hba.conf для хоста

Я получаю следующую ошибку, когда пытаюсь подключиться с помощью DBI

DBI connect('database=chaosLRdb;host=192.168.0.1;port=5433','postgres',...) 
failed: FATAL:  no pg_hba.conf entry for host "192.168.0.1", user "postgres", database "chaosLRdb", SSL off

Вот мой файл pg_hba.conf:

# "local" is for Unix domain socket connections only
local   all         all                               md5
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

host    all         postgres    127.0.0.1/32          trust

host    all        postgres     192.168.0.1/32        trust

host    all        all         192.168.0.1/32        trust

host    all        all         192.168.0.1/128        trust

host    all        all         192.168.0.1/32        md5

host    chaosLRdb    postgres         192.168.0.1/32      md5
local    all        all         192.168.0.1/32        trust

Мой код на Perl

#!/usr/bin/perl-w
use DBI;
use FileHandle;

print "Start connecting to the DB...\n";

@ary = DBI->available_drivers(true);
%drivers = DBI->installed_drivers();
my $dbh = DBI->connect("DBI:PgPP:database=chaosLRdb;host=192.168.0.1;port=5433", "postgres", "chaos123");

Могу я узнать, что мне здесь не хватает?


person Community    schedule 10.09.2009    source источник


Ответы (13)


Если вы можете изменить эту строку:

host    all        all         192.168.0.1/32        md5

С этим:

host    all        all         all                   md5

Вы можете увидеть, решит ли это проблему.

Но еще одно соображение заключается в том, что ваш порт postgresql (5432) очень открыт для парольных атак с помощью хакеров (возможно, они могут подобрать пароль). Вы можете изменить свой порт postgresql 5432 на «33333» или другое значение, чтобы они не знали эту конфигурацию.

person Hasan Tuna Oruç    schedule 03.01.2016
comment
Пробовал делать вроде все хосты все * md5. Но это не сработало. Но мне удалось на твоем пути. Большое спасибо. - person Rahal Kanishka; 13.11.2017
comment
Это решение заставило меня понять, что я вообще не понял четвертый параметр, спасибо! - person Sebastien DErrico; 23.11.2017

В вашем файле pg_hba.conf я вижу несколько неправильных и сбивающих с толку строк:

# fine, this allows all dbs, all users, to be trusted from 192.168.0.1/32
# not recommend because of the lax permissions
host    all        all         192.168.0.1/32        trust

# wrong, /128 is an invalid netmask for ipv4, this line should be removed
host    all        all         192.168.0.1/128       trust

# this conflicts with the first line
# it says that that the password should be md5 and not plaintext
# I think the first line should be removed
host    all        all         192.168.0.1/32        md5

# this is fine except is it unnecessary because of the previous line
# which allows any user and any database to connect with md5 password
host    chaosLRdb  postgres    192.168.0.1/32        md5

# wrong, on local lines, an IP cannot be specified
# remove the 4th column
local   all        all         192.168.0.1/32        trust

Я подозреваю, что если вы введете пароль md5, это может сработать, если вы обрежете строки. Чтобы получить md5, вы можете использовать perl или следующий сценарий оболочки:

 echo -n 'chaos123' | md5sum
 > d6766c33ba6cf0bb249b37151b068f10  -

Итак, ваша линия подключения хотела бы что-то вроде:

my $dbh = DBI->connect("DBI:PgPP:database=chaosLRdb;host=192.168.0.1;port=5433",
    "chaosuser", "d6766c33ba6cf0bb249b37151b068f10");

Для получения дополнительной информации см. документацию файла pg_hba.conf postgres 8.X < / а>.

person Gray    schedule 18.01.2011
comment
Да, вероятно, он отказался загружать файл pg_hba.conf из-за ошибок. - person Peter Eisentraut; 19.01.2011

Чтобы решить эту проблему, вы можете попробовать это.

Во-первых, вы узнали свой pg_hba.conf следующим образом:

cd /etc/postgresql/9.5/main из корневого каталога

и откройте файл, используя

sudo nano pg_hba.conf

затем добавьте эту строку:

local   all         all                               md5

в ваш pg_hba.conf, а затем перезапустите его с помощью команды:

sudo service postgresql restart
person Chirag Agrawal    schedule 17.03.2020

Чтобы решить эту проблему, вы можете попробовать это.

сначала вам нужно узнать свой pg_hba.conf и написать:

local all all md5

после этого перезапустите сервер pg:

postgresql restart

or

sudo /etc/init.d/postgresql restart
person uma    schedule 19.03.2014

Для тех, кто получает эту ошибку в DBeaver, решение было найдено здесь в строке:

@lcustodio на странице SSL, установите режим SSL: require и либо оставьте поле SSL Factory пустым, либо используйте org.postgresql.ssl.NonValidatingFactory

На вкладке «Сеть» -> «SSL» я установил флажок «Использовать SLL» и установил «Расширенный» -> «Режим SSL = требуется», и теперь он работает.

person Guy Lowe    schedule 11.10.2018

Добавьте следующую строку в pg_hba.conf

hostnossl все все 0.0.0.0/0 доверять

А затем перезапустите Сервис.

person Sumant Singh    schedule 01.12.2020

Для тех, у кого есть аналогичная проблема при попытке подключиться к локальной базе данных и попытках типа
con = psycopg2.connect(database="my_db", user="my_name", password="admin"), попробуйте передать дополнительный параметр, так что следующее сэкономило мне день:
con = psycopg2.connect(database="my_db", user="my_name", password="admin", host="localhost")

person Yauhen    schedule 03.04.2015
comment
Использование local тоже спасло мне день! Полное имя хоста работает удаленно, но не работает локально. - person Dave; 12.04.2015

Если вы получаете сообщение об ошибке, подобное приведенному ниже:

OperationalError: FATAL:  no pg_hba.conf entry for host "your ipv6",
                  user "username", database "postgres", SSL off

затем добавьте следующую запись с вашим MAC-адресом.

host   all    all       [your ipv6]/128         md5
person shiddu mageppa    schedule 02.08.2017
comment
Моя проблема была связана с адресом IPV6, поэтому добавление именно моего адреса IPV6 решило проблему. Спасибо Шидду - person Phi; 21.07.2020

также проверьте переменную PGHOST:

ECHO $ ​​PGHOST

чтобы узнать, соответствует ли оно имени локальной машины

person Lynx Kepler    schedule 03.09.2014

Кстати, в моем случае мне нужно было указать пользователя / pwd в URL-адресе, а не как независимые свойства, они были проигнорированы, и мой пользователь ОС использовался для подключения

Моя конфигурация находится в файле server.xml WebSphere 8.5.5

<dataSource 
    jndiName="jdbc/tableauPostgreSQL" 
    type="javax.sql.ConnectionPoolDataSource">
    <jdbcDriver 
        javax.sql.ConnectionPoolDataSource="org.postgresql.ds.PGConnectionPoolDataSource" 
        javax.sql.DataSource="org.postgresql.ds.PGPoolingDataSource" 
        libraryRef="PostgreSqlJdbcLib"/>
    <properties 
        url="jdbc:postgresql://server:port/mydb?user=fred&amp;password=secret"/>
</dataSource>

Это не сработает, и вы получите сообщение об ошибке:

<properties 
    user="fred"
    password="secret"
    url="jdbc:postgresql://server:port/mydb"/>
person Florin D    schedule 28.02.2018

в моем случае я просто изменил spring.postgresql.jdbc.url, содержащий IPV4, я изменил его на 127.0.0.1

person Sobhan    schedule 08.12.2019

Проверьте имя хоста / адрес подключения postgres в pgadmin и используйте то же самое в параметре подключения.

DBI connect ('database = chaosLRdb; host = сохранить то, что упомянуто; port = 5433', 'postgres', ...)

person Balaji    schedule 07.10.2020
comment
Добро пожаловать в Stack Overflow! Пользователь никогда не упоминает, что может получить доступ к базе данных с помощью pgAdmin. - person Gustavo Kawamoto; 07.10.2020

person    schedule
comment
Тот факт, что он получил ошибку об отсутствии строки pg_hba.conf, означает, что он еще не успел проверить пароль. - person Peter Eisentraut; 19.01.2011