- - PR -
DB接続エラー
1|2|3
次のページへ»
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-09-26 15:01
いつもお世話になっております。
・MySQL Server 4.1 ・tomcat-5.0.28 ・mysql-connector-java-3.1.10 にバージョンアップをし、DB接続の処理を行おうとしています。 しかし、 [mysql接続] C:\\Documents and Settings\\Administrator>mysql -u root -p Enter password: ***** Welcome to the MySQL monitor. Commands end with ; or \\g. Your MySQL connection id is 7 to server version: 4.1.14-nt Type 'help;' or '\\h' for help. Type '\\c' to clear the buffer. mysql>use kadaidb としているので、 [接続プールクラス] package kadai; import java.sql.*; import java.util.*; public class DBConnectionPool { private String driver; //ドライバクラス private String url; //URL private String user; //ユーザー名 private String password; //パスワード private int maxConnection; //最大接続数 private int checkedOut; //貸し出している接続数 private Vector connectionPool = new Vector(); private static DBConnectionPool instance; /** *インスタンスを取得 */ public static synchronized DBConnectionPool getInstance() { if (instance == null) { instance = new DBConnectionPool(); } return instance; } /** *コンストラクタ */ private DBConnectionPool() { this.driver = "org.gjt.mm.mysql.Driver"; this.url = "jdbc:mysql:///kadaidb?useUnicode=true&charcterEncoding=Shift_JIS"; this.user = "root"; this.password = "****"; ←rootのパスワードを入力 this.maxConnection = 10; } /** *コネクションを取得 */ public synchronized Connection getConnection() throws Exception { Connection con = null; if(connectionPool.size() > 0) { con = (Connection) connectionPool.firstElement(); connectionPool.removeElementAt(0); try { if (con.isClosed()) { con = getConnection(); } }catch (SQLException e) { con = getConnection(); } }else if (maxConnection == 0 || checkedOut < maxConnection) { con = newConnection(); } if (con != null) { checkedOut++; } return con; } /** *新規にコネクションを作成 */ private Connection newConnection() throws Exception { Class.forName(driver); return DriverManager.getConnection(url,user,password); } /** コネクションを返却 */ public synchronized void freeConnection(Connection con) { connectionPool.addElement(con); checkedOut--; notifyAll(); } /** *すべてのコネクションを開放 */ public synchronized void release() { Enumeration enumConnections = connectionPool.elements(); while (enumConnections.hasMoreElements()) { Connection con = (Connection)enumConnections.nextElement(); try { con.close(); } catch (SQLException e) { } } connectionPool.removeAllElements(); } } としたのですが、 [TOMCATエラー] 致命的: データソース org.apache.struts.action.DATA_SOURCE の初期化 org.apache.commons.dbcp.SQLNestedException: Cannot create PoolableConnectionFact ory, cause: java.sql.SQLException: Invalid authorization specification message from server: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1997) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:1906) at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:2520) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:817) at com.mysql.jdbc.Connection.createNewIO(Connection.java:1782) at com.mysql.jdbc.Connection.<init>(Connection.java:450) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java :411) at org.apache.commons.dbcp.DriverConnectionFactory.createConnection(Driv erConnectionFactory.java:82) at org.apache.commons.dbcp.PoolableConnectionFactory.makeObject(Poolable ConnectionFactory.java:300) at org.apache.commons.dbcp.BasicDataSource.validateConnectionFactory(Bas icDataSource.java:838) at org.apache.commons.dbcp.BasicDataSource.createDataSource(BasicDataSou ・ ・ ・ とエラーが出てきてしまいます。 エラーの内容はパスワードが違うとでてますが、 きちんとmysqlに接続する際に使用するパスワードではいけないのでしょうか? いろいろ調べてみたのですが、思うような情報に行き着きません。 どなたかご教授のほど宜しくお願いいたします。 | ||||
|
投稿日時: 2005-09-26 19:51
これですが、kadaidbってデータベース名ですよね? それじゃ、どこのマシンのデータベースですか? ホスト名とかIPとかって指定しなくて良いのでしたっけ? | ||||
|
投稿日時: 2005-09-27 09:47
ちょま吉様 お返事ありがとうございます。
ご指摘をうけまして、変更してみたのですが private DBConnectionPool() { this.driver = "org.gjt.mm.mysql.Driver"; this.url = "jdbc:mysql://localhost/kadaidb?useUnicode=true&charcterEncoding=Shift_JIS"; this.user = "root"; this.password = "****"; this.maxConnection = 10; や private DBConnectionPool() { this.driver = "org.gjt.mm.mysql.Driver"; this.url = "jdbc:mysql://IPアドレス/kadaidb?useUnicode=true&charcterEncoding=Shift_JIS"; this.user = "root"; this.password = "****"; this.maxConnection = 10; など試してみたのですが、 同じエラーがかえってきてしまいます。 どこが正しくないのでしょうか・・・? お手数をおかけいたしますが、教えてください。 宜しくお願いいたします。 | ||||
|
投稿日時: 2005-09-27 11:09
DBCPやTomcatが影響しているとは思えませんが、一応状況をシンプルにするためにも、まずはスタンドアロンのプログラムで検証するのが手軽ではないでしょうか。
| ||||
|
投稿日時: 2005-09-27 11:16
ちょっと調べたところ、ポート番号を明示的にしていしたらうまくいった、という情報がありました。
関係あるかわかりませんが。 http://www.jforum.net/posts/list/459.page#2051 これも参考になるかも? http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?mode=viewtopic&topic=14219&forum=26&start=8 | ||||
|
投稿日時: 2005-09-27 11:21
MySQLへrootユーザで接続できるかも確認してみてください。
http://dev.mysql.com/doc/mysql/ja/access-denied.html | ||||
|
投稿日時: 2005-09-27 13:24
インギ様、夏椰(かや)様 お返事ありがとうございます。
***インギ様より*** >ちょっと調べたところ、ポート番号を明示的にしていしたらうまくいった、という情報がありました。 >関係あるかわかりませんが。 ということで、 private DBConnectionPool() { this.driver = "org.gjt.mm.mysql.Driver"; this.url = "jdbc:mysql://3306/kadaidb?useUnicode=true&charcterEncoding=Shift_JIS"; this.user = "root"; this.password = "admin"; this.maxConnection = 10; } や private DBConnectionPool() { this.driver = "org.gjt.mm.mysql.Driver"; this.url = "jdbc:mysql://localhost:3306/kadaidb?useUnicode=true&charcterEncoding=Shift_JIS"; this.user = "root"; this.password = "admin"; this.maxConnection = 10; } としてみましたが、同じエラーでした。 また、 参考のスレッドを確認してみましたが、私もパスワードは正しく設定しています。 ***夏椰(かや)より*** >MySQLへrootユーザで接続できるかも確認してみてください。 とのことで、 コマンドプロンプトより C:\\Documents and Settings\\Administrator>mysqladmin -u root -padmin ver mysqladmin Ver 8.41 Distrib 4.1.14, for Win32 on ia32 Copyright (C) 2000 MySQL AB & MySQL Finland AB & TCX DataKonsult AB This software comes with ABSOLUTELY NO WARRANTY. This is free software, and you are welcome to modify and redistribute it under the GPL license Server version 4.1.14-nt Protocol version 10 Connection localhost via TCP/IP TCP port 3306 Uptime: 4 hours 35 min 0 sec Threads: 1 Questions: 21 Slow queries: 0 Opens: 13 Flush tables: 1 Open tables: 0 Queries per second avg: 0.001 としてみて、rootユーザーで接続できると判断してもよろしいのですよね? 本当にお手数をお掛けして申し訳ございませんが、ご教授宜しくお願いいたします。 | ||||
|
投稿日時: 2005-09-27 13:35
すみません。
接続確認を実行したマシンは Tomcatが起動しているマシンと同じでしょうか? MySQLは接続元の限定ができるようなので、 接続確認をしたマシンとTomcatが動いているマシンが 同一でないと意味がないようです。 (参照元URL) http://dev.mysql.com/doc/mysql/ja/connection-access.html これで同一だったらJDBCなどの設定になるのかな・・・? |
1|2|3
次のページへ»