perl - unable - no hay entrada pg_hba.conf para el host
org postgresql util psqlexception fatal no pg_hba conf entry for host (8)
En su archivo pg_hba.conf, veo algunas líneas incorrectas y confusas:
# 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
Sospecho que si md5ndiste la contraseña, esto podría funcionar si cortas las líneas. Para obtener el md5 puede usar perl o el siguiente script de shell:
echo -n ''chaos123'' | md5sum
> d6766c33ba6cf0bb249b37151b068f10 -
Entonces, su línea de conexión le gustaría algo como:
my $dbh = DBI->connect("DBI:PgPP:database=chaosLRdb;host=192.168.0.1;port=5433",
"chaosuser", "d6766c33ba6cf0bb249b37151b068f10");
Para obtener más información, aquí está la documentación del archivo pg_hba.conf de postgres 8.X.
Obtengo un error de seguimiento cuando trato de conectarme usando 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
Aquí está mi archivo 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
Mi código perl es
#!/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");
¿Puedo saber lo que extraño aquí?
La configuración de tu servidor postgres parece correcta
host all all 127.0.0.1/32 md5 host all all 192.168.0.1/32 trust Eso debería otorgar acceso desde el cliente al servidor postgres. Entonces eso me lleva a creer que el nombre de usuario / contraseña es lo que está fallando.
Pruebe esto creando un usuario específico para esa base de datos
createuser -a -d -W -U postgres chaosuser
Luego ajusta tu script Perl para usar el usuario recién creado
my $dbh = DBI->connect("DBI:PgPP:database=chaosLRdb;host=192.168.0.1;port=5433", "chaosuser", "chaos123");
Para aquellos que tienen el problema similar tratando de conectarse a DB local y tratando como
con = psycopg2.connect(database="my_db", user="my_name", password="admin")
, intente pasar el parámetro adicional, por lo que lo siguiente me salvó un día:
con = psycopg2.connect(database="my_db", user="my_name", password="admin", host="localhost")
Para resolver este problema, puedes intentar esto.
primero debes averiguar tu pg_hba.conf y escribir:
local all all md5
después de eso, reinicie el servidor pg:
postgresql restart
o
sudo /etc/init.d/postgresql restart
Por cierto, en mi caso era que necesitaba especificar el usuario / pwd en la url, no como propiedades independientes, se ignoraron y mi usuario del sistema operativo se usó para conectar
Mi configuración está en un archivo WebSphere 8.5.5 server.xml
<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>
Esto no funcionaría y estaba recibiendo el error:
<properties
user="fred"
password="secret"
url="jdbc:postgresql://server:port/mydb"/>
Si obtiene un error como el siguiente:
OperationalError: FATAL: no pg_hba.conf entry for host "your ipv6",
user "username", database "postgres", SSL off
luego agregue una entrada como la siguiente, con su dirección MAC.
host all all [your ipv6]/128 md5
Si puedes cambiar esta línea:
host all all 192.168.0.1/32 md5
Con este:
host all all all md5
Puedes ver resolver este problema.
Pero otra acción es que tu puerto postgresql (5432) esté muy abierto para intentar contraseñas con piratas informáticos (quizás puedan encontrarlo). Puede cambiar su puerto postgresql 5432 a ''33333'' u otro. Entonces no pueden conocer esta configuración.
también verifique la variable PGHOST:
ECHO $ PGHOST
para ver si coincide con el nombre de la máquina local