简体   繁体   中英

Is it possible to create a jdbc connection without a password (using postgresql 'trust')?

I am using jdbc to connect to a postgresql database in a java application (actually the app is written in Groovy). I have postgresql set up to use the 'trust' authentication method. Is it possible to open a jdbc connection without specifying a password? When I try to use the normal constructor with a blank password, it fails with

Exception in thread "Thread-2" org.postgresql.util.PSQLException: FATAL: password authentication failed for user "myuser"

Even though, from the command line, this works fine

psql -U myuser mydatabase
Welcome to psql 8.3.5, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
      \h for help with SQL commands
      \? for help with psql commands
      \g or terminate with semicolon to execute query
      \q to quit

Yes, you can.

Note that Postres JDBC driver always uses IP sockets ( host in pg_hba.conf ), even if database is on the local machine, then psql can use local sockets ( local in pg_hba.conf ). So, if psql works with trust authentication and JDBC doesn't, you probably should configure trust authentication for IP sockets, see documentation .

Already answered but:

When you connect using the psql client program, and don't specify a host ( -h ), the default is to use a local socket (at least in Linux). In JDBC, instead, you will use a TCP/IP socket. Then, to check your connection problem you should invoke psql with the same settings you are using in JDBC, host included.

For example

 psql -U myuser -h 127.0.0.1 mydatabase    # uses TCP/IP

Which is not the same as

 psql -U myuser mydatabase      # uses local socket (non TCP/IP)

至少包括3.1版的GlassFish在指定空JDBC密码时存在问题

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM