Обсуждение: (Yet another) unable to connect w/ JDBC via hostname

Поиск
Список
Период
Сортировка

(Yet another) unable to connect w/ JDBC via hostname

От
Mark Dzmura
Дата:
Help!

I am writing some software which uses JDBC to access SQL databases,
and am using Postgresql in the SQL database role.

I am unable to connect to a database using a "fully qualified"
URL to name the database.

I have searched the postgresql [INTERFACE] mailing list archives and
found some related problems, but the answers seem to point to the
pg_hba.conf file - and I believe I have uncommented and modified a line
in the default file which should give access to hosts on my LAN.

On to my problem:

For example, I if I use any of the following URL's, running the client on the same
machine which hosts the database:
jdbc:postgresql:db1jdbc:postgresql://127.0.0.1/db1jdbc:postgresql://localhost/db1

it WORKS!!

However, if I try to use a fully-qualified address:
jdbc:postgresql://enterprise.foobar.com/db1jdbc:postgresql://enterprise/db1

it fails with the following goofy error message:
$ java com.foobar.jdbc.DBTest // comments added manually!loading driver!    // my outputconnecting to database  // my
ouputExceptionthrown!   // my output// following is driver output:Something unusual has occured to cause the driver to
fail.Please report this exception: {1} at postgresql.Driver.connect(Compiled Code) at
java.sql.DriverManager.getConnection(CompiledCode) at java.sql.DriverManager.getConnection(Compiled Code) at
com.foobar.jdbc.DBTest.main(CompiledCode)
 

--------------------------------
Now for some background:

1. I am using the following software:
- Red Hat Linux 5.2 with kernel 2.2.7- Blackdown JDK 1.2.pre-beta-1- Postgresql 6.5 (latest version, not the one that
camewith Redhat)- Postgresql JDBC (jdbc6.5-1.2.jar)
 

2. Both of the host names used in the (failing) examples above  are locally resolvable:
  enterprise  enterprise.foobar.com

3. postgresql is running with the -i switch, enabling internet access
  $ ps ax | grep pg   4811  ?  S    0:00 /usr/local/pgsql/bin/postmaster -i

4. The access file, pg_hba.conf contains the following line:
  host         all   208.205.224.0   255.255.255.0     ident     sameuser
  The intention is to allow any host on the local network to  access any database using "ident" validation semantics
(unixusers).
 

5. The database was stopped and started after making these changes.

6. The following Java code tries to open a connection (in both  the working and non-working cases):
  Connection db = DriverManager.getConnection(dbURL,             user,             pass);
The user and pass strings are a valid unix user and password,and the user has full access to the database in question.
As mentioned above, This call throws an exception if dbURL isfully qualified (even if the machine name is the
localhost),butNOT if it refers to a local database.
 

Any ideas ??

Thanks,
Mark Dzmura

--
)))) This email routed via a wireless gateway!! ((((





Re: [INTERFACES] (Yet another) unable to connect w/ JDBC via hostname

От
Herouth Maoz
Дата:
At 20:45 +0300 on 27/07/1999, Mark Dzmura wrote:


> 4. The access file, pg_hba.conf contains the following line:
>
>    host         all   208.205.224.0   255.255.255.0     ident     sameuser
>
>    The intention is to allow any host on the local network to
>    access any database using "ident" validation semantics (unix users).
>
> 5. The database was stopped and started after making these changes.
>
> 6. The following Java code tries to open a connection (in both
>    the working and non-working cases):
>
>    Connection db = DriverManager.getConnection(dbURL,
>               user,
>               pass);
>
>  The user and pass strings are a valid unix user and password,
>  and the user has full access to the database in question.
>
>  As mentioned above, This call throws an exception if dbURL is
>  fully qualified (even if the machine name is the localhost),
>  but NOT if it refers to a local database.

1. Does identd run on your system?

2. Is the user you pass to the connection the same as the one that  actually runs the program? This is important,
becauseyou asked  Postgres to check by Ident that the user who tries to connect is  indeed who he says he is (hence
"sameuser").
  Since you didn't show the pg_hba.conf line that pertains to  localhost (127.0.0.1), I assume that it uses 'trust'.
Thiswould  explain the differences in behaviour.
 

BTW, if you use ident, you may as well pass an empty password. It is not
checked.

Herouth

--
Herouth Maoz, Internet developer.
Open University of Israel - Telem project
http://telem.openu.ac.il/~herutma