suitable postgres paso found for example desde consulta conectar con java postgresql jdbc connection-string database-connection

java - paso - Conectando a la instancia local de PostgreSql con JDBC



jdbc postgresql example (2)

Además de otras respuestas, tenga en cuenta que, por defecto, Postgres está configurado para aceptar conexiones a través de sockets Unix con autenticación basada en su cuenta del sistema operativo, por eso psql funciona bien y no requiere la contraseña.

Las conexiones JDBC se realizan a través de TCP / IP con autenticación de contraseña, por lo que necesita modificar pg_hba.conf consecuencia. Por ejemplo, esta línea permite conexiones TCP / IP desde la misma máquina a todas las bases de datos para todos los usuarios con autenticación de contraseña:

host all all 127.0.0.1/32 md5

Después de agregar esta línea, jdbc:postgresql:databasename debería funcionar.

EDITAR: No puede crear una conexión JDBC a través del socket Unix ya que el controlador JDBC de PostgreSQL solo puede funcionar sobre TCP / IP. La contraseña que utiliza al crear la conexión JDBC es la contraseña asignada a su usuario. Si no lo tiene, puede asignarlo, por ejemplo, usando el comando ALTER USER . Ver 19.3. Métodos de autenticación .

Ver también:

Tengo una instancia local en ejecución de PostgreSql en una máquina Linux. Cuando uso el comando psql desde el shell I con éxito para iniciar sesión sin ningún problema. Necesito conectarme a PostgreSql a través del JDBC, pero no sé qué debo pasar exactamente como parámetro url a DriverManager.getConnection() .

Debería comenzar con jdbc:postgresql: pero ¿qué es lo siguiente?

El grupo del sistema me dijo que se creó una base de datos como nombre de usuario. por ejemplo, si mi usuario es jutky se jutky una base de datos llamada jutky , pero cuando intento abrir una conexión a jdbc:postgresql:jutky , jdbc:postgresql:jutky un error.

org.postgresql.util.PSQLException: FATAL: password authentication failed for user "jutky" :(

información adicional

Cuando inicio sesión a través del psql no se me solicita la contraseña, así que cuando intento iniciar sesión a través de JDBC, paso una cadena vacía como contraseña. ¿Es correcta o debo pasar null o algo así?

Cuando psql --help en el shell, veo entre el resto esta línea:

Connection options: -h, --host=HOSTNAME database server host or socket directory (default: "/var/run/postgresql")

Entonces, entiendo que me conecto a PostgreSql a través de un socket directory , ¿eso tiene algo que ver con la cadena URL en el JDBC?

EDITAR

Primero gracias por las respuestas.

Segundo: no es la primera vez que uso JDBC y, en particular, no es la primera vez que me conecto a PostgreSql desde JDBC, así que conozco las reglas generales y he leído las documentaciones. Sin embargo, en el caso descrito, no estoy seguro de cómo debo construir exactamente la cadena de conexión si la instancia se está ejecutando a través del socket directory y qué contraseña debo proporcionar. Porque cuando inicio sesión a través del psql no se me pide ninguna contraseña.

Gracias por adelantado.


Todo está explicado en la documentación oficial .

Esta es la parte relevante:

String url = "jdbc:postgresql://localhost/test?user=fred&password=secret&ssl=true"; Connection conn = DriverManager.getConnection(url);