호스트에 대한 pg_hba.conf 항목이 없습니다.
DBI를 사용하여 연결하려고하면 다음 오류가 발생합니다.
DBI 연결 ( 'database = chaosLRdb; host = 192.168.0.1; port = 5433', 'postgres', ...) 실패 : 치명적 : 호스트 "192.168.0.1", 사용자 "postgres", 데이터베이스 "chaosLRdb"에 대한 pg_hba.conf 항목 없음, SSL 꺼짐
다음은 내 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
내 펄 코드는
#!/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");
내가 여기서 무엇을 놓쳤는 지 알 수 있을까요?
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");
자세한 내용 은 postgres 8.X의 pg_hba.conf 파일 문서를 참조하십시오 .
이 줄을 변경할 수있는 경우 :
host all all 192.168.0.1/32 md5
이것으로 :
host all all all md5
이것이 문제를 해결하는지 확인할 수 있습니다.
그러나 또 다른 고려 사항은 postgresql 포트 (5432)가 해커의 암호 공격에 매우 개방적이라는 것입니다 (아마도 암호를 무차별 대입 할 수 있음). postgresql 포트 5432를 '33333'또는 다른 값으로 변경할 수 있으므로이 구성을 알 수 없습니다.
postgres 서버 구성이 올바른 것 같습니다.
host all all 127.0.0.1/32 md5
host all all 192.168.0.1/32 trust
클라이언트에서 postgres 서버에 대한 액세스 권한을 부여해야합니다. 그래서 사용자 이름 / 비밀번호가 실패한 것이라고 믿게됩니다.
해당 데이터베이스에 대한 특정 사용자를 만들어이를 테스트합니다.
createuser -a -d -W -U postgres chaosuser
그런 다음 새로 생성 된 사용자를 사용하도록 perl 스크립트를 조정합니다.
my $dbh = DBI->connect("DBI:PgPP:database=chaosLRdb;host=192.168.0.1;port=5433", "chaosuser", "chaos123");
이 문제를 해결하려면 이것을 시도 할 수 있습니다.
먼저 pg_hba.conf를 찾아서 다음과 같이 작성하십시오.
local all all md5
그 후 pg 서버를 다시 시작하십시오.
postgresql restart
또는
sudo /etc/init.d/postgresql restart
For those who have the similar problem trying to connect to local db and trying like
con = psycopg2.connect(database="my_db", user="my_name", password="admin")
, try to pass the additional parameter, so the following saved me a day:
con = psycopg2.connect(database="my_db", user="my_name", password="admin", host="localhost")
For those who are getting this error in DBeaver the solution was found here at line:
@lcustodio on the SSL page, set SSL mode: require and either leave the SSL Factory blank or use the org.postgresql.ssl.NonValidatingFactory
Under Network -> SSL tab I checked the Use SLL checkbox and set Advance -> SSL Mode = require and it now works.
also check the PGHOST variable:
ECHO $PGHOST
to see if it matches the local machine name
If you are getting an error like the one below:
OperationalError: FATAL: no pg_hba.conf entry for host "your ipv6",
user "username", database "postgres", SSL off
then add an entry like the following, with your mac address.
host all all [your ipv6]/128 md5
BTW, in my case it was that I needed to specify the user/pwd in the url, not as independent properties, they were ignored and my OS user was used to connect
My config is in a WebSphere 8.5.5 server.xml file
<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&password=secret"/>
</dataSource>
This would not work and was getting the error:
<properties
user="fred"
password="secret"
url="jdbc:postgresql://server:port/mydb"/>
ReferenceURL : https://stackoverflow.com/questions/1406025/no-pg-hba-conf-entry-for-host
'programing' 카테고리의 다른 글
Angular CLI에서 피어 종속성 설치를 어떻게 처리합니까? (0) | 2021.01.15 |
---|---|
Spring 관리 컨텍스트 외부의 클래스에 Bean 주입 (0) | 2021.01.15 |
타 일드 드로어 블이 때때로 늘어남 (0) | 2021.01.15 |
iOS 7 : 전체 앱에 대해 UINavigationBar 반투명 비활성화 (0) | 2021.01.15 |
컨볼 루션 신경망의 배치 정규화 (0) | 2021.01.15 |