1

マシンと背景: OSX 10.5.8 32 ビット。MySQL パスワードは ""、つまり空です

目標: Java Database Connector (JDBC) のチュートリアルを使用しようとしています。私は現在この段階にいます。

エラー: JDBC チュートリアルがあるディレクトリのシェルで、入力するsudo ant create-mysql-databaseと次のエラーが表示されます。

ビルドファイル: /Users/adam/Desktop/JDBCTutorial/build.xml

作成-mysql-データベース:

ビルドに失敗しました /Users/adam/Desktop/JDBCTutorial/build.xml:73: java.sql.SQLException: com.mysql.jdbc.SQLError.createSQLException でユーザー 'root'@'localhost' (パスワードを使用: YES) のアクセスが拒否されました(SQLError.java:1074) com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074) で com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006) で com.mysql.jdbc.MysqlIO。 checkErrorPacket(MysqlIO.java:919) com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694) com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244) com.mysql.jdbc.ConnectionImpl .coreConnect(ConnectionImpl.java:2397) com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430) com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215) com.mysql.jdbc. ConnectionImpl.(ConnectionImpl.java:813) com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395) で com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334) で org.apache.tools.ant.taskdefs.JDBCTask.getConnection で(JDBCTask.java:370) org.apache.tools.ant.taskdefs.SQLExec.getConnection(SQLExec.java:942) で org.apache.tools.ant.taskdefs.SQLExec.execute(SQLExec.java:614) でorg.apache.tools.ant.UnknownElement.execute(UnknownElement.java:291) で sun.reflect.GeneratedMethodAccessor4.invoke(不明なソース) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) で java.lang. org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) のreflect.Method.invoke(Method.java:592) org.apache.tools.ant.Task.perform(Task.java: 348) org.apache.tools.ant.Target.execute(Target.java:390) で org.org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) の apache.tools.ant.Target.performTasks(Target.java:411) org.apache.tools.ant.Project.executeTarget(Project. java:1368) org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:41) で org.apache.tools.ant.Project.executeTargets(Project.java:1251) で org.apache.tools .ant.Main.runBuild(Main.java:809) at org.apache.tools.ant.Main.startAnt(Main.java:217) at org.apache.tools.ant.launch.Launcher.run(Launcher.java) :280) org.apache.tools.ant.launch.Launcher.main(Launcher.java:109) でorg.apache.tools.ant.Project.executeTargets(Project.java:1251) の executeTargets(DefaultExecutor.java:41) org.apache.tools.ant.Main.runBuild(Main.java:809) の org.apache org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) の .tools.ant.Main.startAnt(Main.java:217) org.apache.tools.ant.launch.Launcher.main の(ランチャー.java:109)org.apache.tools.ant.Project.executeTargets(Project.java:1251) の executeTargets(DefaultExecutor.java:41) org.apache.tools.ant.Main.runBuild(Main.java:809) の org.apache org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) の .tools.ant.Main.startAnt(Main.java:217) org.apache.tools.ant.launch.Launcher.main の(ランチャー.java:109)

自己修正の取り組み: thisgrant all on initdb.* to 'root'@'127.0.0.1' identified by ''ごとにコマンドの最後に追加してみました。同じエラー。何かをするためにアリへのアクセスを拒否しているようです。パスワードの使用オプションを NO にオフにすると、うまくいくでしょう。私はそれについてグーグルで試してみましたが、運はありません

4

2 に答える 2

0

JDBC チュートリアル フォルダーのbuild.xmlファイルで、文字列「create-mysql-database」を検索します。文字列は、 .xmlファイルで定義されたタスクにラベルを付けます。そのテキスト ブロックの「パスワード」パラメーターの値を特定し (ダッシュコードなどのハイライト プログラムを使用してテキストを読むとより簡単になります)、システムのデータベースで動作する値に変更します (私の場合は「」)。

編集前に「password」の文字列を見つけたら、 .xmlファイル全体で同じ文字列を見つけて、正しいパスワードに置き換えます。

教訓: どうやらantは、呼び出し時に渡された文字列 (つまり、文字列 "ant" の後の文字列) を取得し、プログラムを呼び出したディレクトリにあるbuild.xmlでそれを探します。パスワードを間違えないように...

于 2012-07-21T00:34:04.390 に答える
0

wearyou の提案に従って、私も JDBC チュートリアルの同じエラーで同じ場所にぶつかりました。プロパティ/mysql-build-properties.xml の行番号に、元のパスワード「YES」(MySQL のセットアップ中に作成したもの) を追加しました。 : 28 .

そしたらうまくいきました…!

于 2013-08-12T09:26:54.607 に答える