- - PR -
修正:JAVAからデータベースへのアクセス
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-15 11:53
そうだったんですか。すみません、知りませんでした。 説明ありがとうございます。 | ||||
|
投稿日時: 2005-09-15 11:55
インギさん
幾度もご変更ありがとうございます。 >postgresql ユーザに切り替えた後、HelloWorldJDBCPostgreSQL.class は >カレントディレクトリに配置されていますか? はい。こちらもカレントディレクトリに配置しております↓ bash-2.05a$ cd bash-2.05a$ pwd /var/lib/pgsql bash-2.05a$ ls HelloWorldJDBCPostgreSQL.class backups data initdb.i18n bash-2.05a$ java HelloWorldJDBCPostgreSQL A connection error has occurred: FATAL: Password authentication failed for user "postgres" at org.postgresql.jdbc1.AbstractJdbc1Connection.openConnection(AbstractJ dbc1Connection.java:196) at org.postgresql.Driver.connect(Driver.java:120) at java.sql.DriverManager.getConnection(DriverManager.java:512) at java.sql.DriverManager.getConnection(DriverManager.java:171) at HelloWorldJDBCPostgreSQL.main(HelloWorldJDBCPostgreSQL.java:14) | ||||
|
投稿日時: 2005-09-15 12:03
スタックトレースから判断すると、やはりインギさんのおっしゃる通り、
パスワードが適切に設定されていないものと思います。 ここでいうパスワードとは、PostgresDBにログインするためのパスワードですが、 それも設定されていないのですか? | ||||
|
投稿日時: 2005-09-15 12:11
postgresユーザに変更する時に
su - postgres (“−”追加)でどうでしょうか?こうするとpostgresユーザの環境変数が設定されるとおもうのですが。 その上でCLASSPATHを設定してあげると。 ↓ダメだった場合 つまりはpostgresユーザでパスワードなしでログインできることをプログラム中でもやりたいと思うのですが、試しに明示的にパスワード有りのユーザを作成してみてはどうでしょうか? 以下が参考になると思います。 http://tomo.ac/goodstream/database/postgresql/linux/tips/userauth2.htm | ||||
|
投稿日時: 2005-09-15 12:12
yoshiさん
ご返答誠にありがとうございます。 >ここでいうパスワードとは、PostgresDBにログインするためのパスワードですが、 >それも設定されていないのですか? はい、そのつもりですが。。通常PostgreSQLにログインする流れは以下の通りです↓ [root@localhost usr]# /etc/rc.d/init.d/postgresql start Starting postgresql service: [ OK ] [root@localhost usr]# su - postgres ←rootからpostgresにユーザ変更 bash-2.05a$ psql hellodb Welcome to psql 7.3.3, the PostgreSQL interactive terminal. Type: \copyright for distribution terms \h for help with SQL commands \? for help on internal slash commands \g or terminate with semicolon to execute query \q to quit hellodb=# \d List of relations Schema | Name | Type | Owner --------+-------------------+-------+---------- public | hello_world_table | table | postgres (1 row) | ||||
|
投稿日時: 2005-09-15 12:45
ん、最初と現象がちがいますよね?
最初(2005-09-15 11:00)はNoClassDefFoundError (クラスがみつからない)ですが、今回(2005-09-15 11:55)はパスワード認証が失敗した旨のエラーがでています。 やはり最初はクラスがカレントディレクトリに配置されていなかったのではないでしょうか。 とりあえず postgres ユーザでのアプリケーションの起動には成功したようなので、再度Driver.connect に渡しているプロパティに正しいパスワード、ユーザが設定されているか確認しましょう。 psql ではどのユーザから起動しているか確認しているのでパスワードを別途入力する必要ないかもしれません。 が、JDBC から接続する場合はプログラムを起動しているユーザ情報は伝わらないので、Properties にセットしておく必要があるからです。 逆に言えば、接続プロパティさえ設定しておけば root からでも postgres ユーザとして接続することも可能です。 [ メッセージ編集済み 編集者: インギ 編集日時 2005-09-15 12:54 ] | ||||
|
投稿日時: 2005-09-15 12:54
インギさんの仰るとおりと思います。
PostgreSQLでパスワード認証を行っていると思われます。 だとするとOSのユーザなどは無関係です。 PostgreSQLでalter user(確か、、、)でパスワードを一時的に設定して接続してみては如何でしょうか? または、ネットでダウンロードできるJavaのツールなどで本当に接続できるか試すとか。 方法はいろいろありますが、 結局、パスワードが本当に空なのか?ということを確認すべきと思います。 | ||||
|
投稿日時: 2005-09-15 12:58
参考になりそうなリンクを。
・本家のドキュメント http://jdbc.postgresql.org/doc.html ・JavaでHello World > プロパティファイル編 http://www.hellohiro.com/property.htm |