1

机器和背景: OSX 10.5.8 32 位。MySQL 密码为 "" 即为空

目标:我正在尝试使用 Java 数据库连接器 (JDBC) 教程。我目前正处于这一步

错误:使用我拥有 JDBC 教程的目录中的 shell,我进入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) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1694) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1244) at 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(Unknown Source) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 在 java.lang。 reflect.Method.invoke(Method.java:592) 在 org.apache.tools.ant.dispatch.DispatchUtils.execute(DispatchUtils.java:106) 在 org.apache.tools.ant.Task.perform(Task.java: 348) 在 org.apache.tools.ant.Target.execute(Target.java:390) 在 org.apache.tools.ant.Target.performTasks(Target.java:411) 在 org.apache.tools.ant.Project.executeSortedTargets(Project.java:1399) 在 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)executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1251) at org.apache.tools.ant.Main.runBuild(Main.java:809) at org.apache .tools.ant.Main.startAnt(Main.java:217) 在 org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 在 org.apache.tools.ant.launch.Launcher.main (Launcher.java:109)executeTargets(DefaultExecutor.java:41) at org.apache.tools.ant.Project.executeTargets(Project.java:1251) at org.apache.tools.ant.Main.runBuild(Main.java:809) at org.apache .tools.ant.Main.startAnt(Main.java:217) 在 org.apache.tools.ant.launch.Launcher.run(Launcher.java:280) 在 org.apache.tools.ant.launch.Launcher.main (Launcher.java:109)

自我纠正努力:我尝试grant all on initdb.* to 'root'@'127.0.0.1' identified by ''在命令末尾添加this。同样的错误。它似乎拒绝访问 ant 做事;也许如果我将使用密码选项关闭为否,它会起作用;我试着用谷歌搜索,但没有运气

4

2 回答 2

0

在 JDBC 教程文件夹的build.xml文件中,搜索字符串“create-mysql-database”;该字符串标记.xml文件中定义的任务。确定该文本块中“密码”参数的值(使用Dashcode等突出显示程序阅读文本时更容易),并将其更改为适用于系统数据库的内容(在我的情况下为“”)。

在编辑之前找到“密码”中的字符串后,在整个.xml文件中找到相同的字符串并将其替换为正确的密码

教训:显然ant在调用它时获取了您传入的字符串(即字符串“ant”之后的字符串),并在您调用程序的目录中的build.xml中查找它。不要输入错误的密码...

于 2012-07-21T00:34:04.390 回答
0

我在 JDBC 教程中也遇到了同样的错误,根据whearyou 的建议,我刚刚在 properties/mysql-build-properties.xml 的第 1 行添加了我的原始密码“YES”(我在进行 MySQL 设置时创建的) : 28 。

然后它起作用了......!

于 2013-08-12T09:26:54.607 回答