0

Java プログラムで JDBC を使用して MySQL に接続しようとしています。プログラムはプロパティ ファイルから読み取り、資格情報 (url、ユーザー名、パスワード) を取得します。パスワードには ^、&、*、@ などの特殊文字を使用します。

プロパティ ファイルのセクションは次のようになります。

mysql.username=bob
mysql.password=th1$is^my@pa$$w*rd   (not the real password, but for the sake of discussion)

スタック トレースからのエラーは次のようになります。

プログラムがパスワードを読み取れることを確認しました(コンソールに出力することにより)。私が行方不明になっているのは、必要なある種のエスケープ シーケンスのように見えますか?

Googleで検索して同僚に尋ねましたが、誰も答えを知らないようです.

どんな助けでも大歓迎です。前もって感謝します。

4

1 に答える 1

1

スタック トレースのエラーは次のようになります: エラー: データベースに接続できません: [43008] アクセスが拒否されました: ユーザー 'bob'@'' に対して

あなたの答え、より具体的には'bob'@''スニペットがあります。これは、ホストなし (または空のホスト) で bob を使用すると、MySQL データベースに接続しようとしていることを示しています。

解決策は、データベースに接続するための正しい URL を取得していることを確認することです。

String url = "jdbc:mysql://"+HOST+"/" + DB; //Double check your HOST constant

Class.forName("com.mysql.jdbc.Driver").newInstance();
Connection conn = DriverManager.getConnection(url, userName, password);

お役に立てば幸いです。乾杯

編集:

パスを正しい方法で保存しているようですが、プロパティファイルでエスケープする必要がある文字は次のとおりです。

\t \n \r \\ \" \' \ (space) \= \:
于 2012-10-02T00:33:17.767 に答える