2012-02-15 29 views
2

自分のUbuntu 11.10デスクトップにローカルのmysqlサーバがあります。 hostname = localhost;ユーザー名= root;パスワード= root;データベース名= CBS。 terminalmysql administrator、およびmysql query browserを使用してmysqlにアクセスすると、私は上記の認証を使用しているので、すべてが問題ないので、私は本当に混乱しています。私の問題は、私は私のJavaアプリケーションで私のjdbc.propertiesを設定するとき、私はこのエラーを取得しています:JDBC Hibernate - MySQL接続エラー

org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.jdbc.UncategorizedSQLException: Hibernate operation: Cannot open connection; uncategorized SQLException for SQL [???]; SQL state [28000]; error code [1045]; Access denied for user 'root '@'localhost' (using password: YES); nested exception is java.sql.SQLException: Access denied for user 'root '@'localhost' (using password: YES)

私の設定ファイル、jdbc.properties:

jdbc.driverClassName=com.mysql.jdbc.Driver 
jdbc.url=jdbc:mysql://localhost:3306/CBS 
jdbc.username=root 
jdbc.password=root 

ところで、理由は私がメインサーバーがシャットダウンするのでローカルサーバーを使用しますので、私のローカルmysqlを使用してプロジェクトを続行する必要があります。助けてください...事前に感謝します。

+1

mysql adminstrator(または他のツール)を使用しているときのホスト名は何ですか?以下に述べるduffymoとして、localhostに接続しているそのユーザーの権限付与の問題があるかもしれません。私はあなたのメッセージの最初の部分にホスト名についての言及は見ませんでした。 – jmq

+1

あなたはrootの信用を使って "java app"を実行しますか? youyアプリが実行されているときに "ps -ef | grep "を使ってチェックアウトし、どのユーザーがそれを実行しているかを確認します - "root"でない場合は、 – alfasin

+0

@jmquigley localhost – NinjaBoy

答えて

2

データベースにアクセスする権限をGRANTする必要があります。このようなもののためのMySQLのドキュメントで

ルック:

create database pmt; 
create user pmt identified by 'pmt'; 
grant all on pmt.* to 'pmt'@'%'; 

「PMT」は、上記一例に過ぎません。私は、データベース、ユーザー名、およびパスワードの名前をすべて同じにしました。ベストプラクティスとしては推奨しません。それは私が地方開発のためにやったことです。

私は個人的には好きではありません。アプリケーションへのルートアクセスを許可します。おもちゃのアプリケーションでもrootのユーザー名とパスワードは使用しません。新しいユーザーを作成してGRANTに適切なアクセス許可を与えるのはあまり手間がかかりません。

+0

どうすればいいですか?見せてください。私はこの事に新しい。 – NinjaBoy

+0

これらのコマンドを実行した後にサーバーを再起動する必要はありますか? – NinjaBoy

+0

mysqlを再起動しますか?いいえ。 – duffymo

5

フレームワークがローカルデータベースに127.0.0.1としてログインしている可能性があります。適切なドメインスコープの資格を定義していない場合は、MySQLでログインの問題が発生します。確認するために、これを試してみてください:

mysql -uroot -proot 
SELECT * from mysql.user WHERE user = 'root'; 

NO「root'@'127.0.0.1」は、問題を発見して、それを改善するために存在する場合、2つのいずれかです:

  1. はドメインを定義します'root'のスコープ付き信任状は '127.0.0.1'です。
  2. 'root'のワイルドカードドメインスコープの認証情報を定義すると、 の複数の場所からの認証情報でMySQLにログインできます。

ここでは第二の例です:サイドノートで

mysql -uroot -proot 

CREATE USER 'root'@'%' IDENTIFIED BY 'root'; 
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION; 
FLUSH PRIVILEGES; 

、私は間違いなくあなたのユーザIDとパスワードの入力をより創造的なものを使用することをお勧めします。特に、ご使用のサーバーでTCPソケットが使用可能になっている場合。

+0

私はWHERE user = 'root'というユーザからSELECT *コマンドを実行しました。私は 'root'@'127.0.0.1'を持っているかどうか私はどのデータベースを使用しますか?私はこれに新しい。 – NinjaBoy

+0

実際、コマンドは 'select * from mysql.user where user = 'root';'です。私は自分の答えを更新しました。 – Perception

+0

「+」や「 - 」のような多くのランダムな文字が見えました。しかし、私はこの行を見た:| localhost |ルート| * 81F5E21E35407D884A6CD4A731AEBFB6AF209E1B | Y |私は根を持っているのですか? – NinjaBoy