以下代码:
Class.forName("com.mysql.jdbc.Driver");
Connection m_connection = DriverManager.getConnection("jdbc:mysql://localhost","root","root");
引发此异常 getConnection()
:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at 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)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
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:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at db.Database.<init>(Database.java:91)
at db.Main.main(Main.java:10)
这是怎么造成的,我该怎么解决?
编辑:
public static void main(String[] args) throws ClassNotFoundException, ServletException, SQLException
{
try
{
Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword");
Statement s = (Statement) conn.createStatement();
int result = s.executeUpdate("CREATE DATABASE databasename");
}
catch ( Exception e)
{
e.printStackTrace();
}
}
生产:
java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4074)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:4006)
at 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)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2430)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2215)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:813)
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:399)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:334)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at db.Main.main(Main.java:19)
24条答案
按热度按时间bybem2ql1#
我有同样的问题如下
复制并粘贴shell中的查询,以检查它是否提供所需的输出。小错误会消耗更多的时间。
z0qdvdin2#
我有一个类似的问题,但不同的是:我没有执行我的javaapp从
localhost
,但是从一台远程电脑。所以我得到了java.sql.SQLException: Access denied for user 'root'@'a.remote.ip.adress' (using password: YES)
要解决此问题,只需登录phpmyadmin,转到Users
,单击add user
并输入要从中执行javaapp的主机(或选择Any Host
)uplii1fm3#
这可以帮助您:
使用命令行或一些gui工具执行它。
别忘了更换
%password%
使用真实密码。lstz6jyr4#
我也在讨论同样的问题。增加了mysql服务端口号(3307),解决了这个问题。
ebdffaop5#
我使用的是SpringBoot2.2.6(windows),在尝试运行应用程序时遇到了相同的问题:java.sql.sqlexception:拒绝用户“root”@“localhost”的访问(使用密码:yes)
是什么解决了我的问题:
创建一个新用户(从mysql工作台或您可能正在使用的类似gui)
同时从gui授予dba权限(勾选dba复选框)
运行spring引导应用程序。
或者按照@evg解决方案在linux env中从命令行授予特权。
pprl5pva6#
像这样试试。。。。
ulmd4ohb7#
这为我解决了问题。
hlswsv358#
这似乎主要发生在mysql用户名和密码不正确的情况下。检查你的mysql用户名和密码。
hivapdat9#
这个异常也是由于mysql db和pom.xml/jar的版本不匹配引起的。
确保pom.xml/jar版本高于mysql db版本。因为高版本和低版本是兼容的,但反之亦然。
java项目的解决方案
用合适的版本更换jar。
基于maven的解决方案
更改pom.xml中的依赖项版本
SpringBoot解决方案-通过添加5.1.5.final覆盖SpringBoot依赖项
gz5pxeao10#
我不得不更改我的sql设置(在我的主机中是dreamhost,在我的例子中是dreamhost),以允许用户名从其他主机(而不仅仅是dreamhost)访问数据库,因为我正在计算机上从ide运行一个程序。我现在通过在允许的主机列表中添加%来做到这一点。现在可以了!
pjngdqdw11#
虽然这可能不是问题的原因,但是如果有两个mysql服务在同一个端口上运行,您将得到相同的错误。您可以通过查看任务管理器的“服务”选项卡中的服务列表来检查windows。
lsmd5eda12#
这是特定于ubuntu 18.04 lts和MySQL5.x的,下面的链接从这里开始:
登录mysql后,从mysql提示符执行以下命令:
现在验证表是否有根目录的密码
这解决了我的问题,现在我可以登录。
wydwbb8l13#
对我来说,解决方案的工作原理是将url格式更改为:con=drivermanager.getconnection(“jdbc:mysql://localhost/w3schools?user=####&password=###“);确保向类路径添加正确的jar,并使用driver class.forname(“com.mysql.jdbc.driver”);
q7solyqu14#
申报顺序:
司机
连接字符串
用户名
密码
如果我们按顺序申报
连接字符串
用户名
密码
司机
应用程序将失败
k0pti3hp15#
你可以用这个
您必须提供正确的根密码。