使用此代码
String url = "jdbc:mysql://localhost/mysql";
Connection con = DriverManager.getConnection(url, "root", "");
我收到以下异常。
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: NO)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:943)
at com.mysql.jdbc.MysqlIO.secureAuth411(MysqlIO.java:4113)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1308)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2336)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2369)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2153)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at MyTest1.main(MyTest1.java:29)
我使用root命令工具登录数据库,没有密码。我能够telnet到数据库,我收到此消息
N
5.5.17-log
7{*Zj%u☻ǧ|tR}=Vz'L,6imysql_native_password"
答案 0 :(得分:0)
'root'@'localhost'
与'root'@'%'
不同。它可能仍然是权限问题。
我建议您通过控制台登录,使用密码创建'test'@'%'用户,并授予其所有权限。您可以了解如何执行此操作here。
答案 1 :(得分:0)
我的MYSQL安装遇到了一些问题。我卸载了我正在使用的AMP软件包并安装了XAMPP,它可以工作。
答案 2 :(得分:0)
即使我也面临同样的问题。但是,在我的应用程序中,我做了一个错误,就像我忘了给密码。您可以尝试手动登录MySQL并检查用于登录的用户名和密码。您可以在URL中使用相同的详细信息。最好还提供数据库名称。如下所示 对于MySQL:
String url = "jdbc:mysql://localhost:3306/mysql";
Connection con = DriverManager.getConnection(url, "root", "");
在上面,你忘了给出MySQL的端口号。一旦你的MySQL有端口号,你可以检查。默认情况下,mySQL端口号为3306.更好地创建和使用自己的数据库。
如果上面的那个不起作用,请尝试GRANT对使用数据库的root用户的所有权限。要授予所有权限,以下是查询
GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'localhost' WITH GRANT OPTION;
或者
GRANT ALL PRIVILEGES ON mysql.* TO 'root'@'localhost' IDENTIFIED BY 'root';