java.sql.SQLException中:访问被拒绝的用户 '根' @ '本地主机'(使用密码:是)
以下代码:java.sql.SQLException中:访问被拒绝的用户 '根' @ '本地主机'(使用密码:是)
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)
当你从头开始创建一个数据库,你可以使用:
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword");
PreparedStatement ps = connection.prepareStatement("CREATE DATABASE databasename");
int result = ps.executeUpdate();
这里是一个identical scenario。
尝试像这样....
public static Connection getConnection() throws SQLException{
String driver = "com.mysql.jdbc.Driver";
String url = "jdbc:mysql://localhost:3306/test";
String username = "root";
String password = "vicky"; // Change it to your Password
System.setProperty(driver,"");
return DriverManager.getConnection(url,username,password);
}
为什么它会解决具体问题?你没有以任何方式解释原因。 – BalusC 2012-08-12 13:02:35
您应指定要连接到数据库:
jdbc:mysql://localhost:3306/mydb
这可以帮助你:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION;
与命令行或一些GUI工具执行。
不要忘记用真实密码替换%password%
。
我遇到了同样的问题。增加了mysql服务端口号(3307),解决了这个问题。
conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/?" + "user=root&password=password");
我也有类似的问题,但differemce是:我没有从localhost
执行我的JavaApp,但是从远程PC。所以我就有点像java.sql.SQLException: Access denied for user 'root'@'a.remote.ip.adress' (using password: YES)
为了解决这个问题,你可以简单地登录到phpMyAdmin,去Users
,点击add user
并输入要执行你的JavaApp主机(或选择Any Host
)
您可以使用此
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/YOUR_DB_NAME";
static final String USER = "root";
static final String PASS = "YOUR_ROOT_PASSWORD";
Connection conn = DriverManager.getConnection(DB_URL,USER,PASS);
你必须给出正确的root密码。
尽管这可能不是您的问题的原因,但如果在同一端口上运行两个MySQL服务,您将得到相同的错误。您可以通过查看任务管理器的服务选项卡中的服务列表来检查窗口。
这是一条评论,而不是答案。 – 2016-06-21 20:22:58
我有同样的问题“java.sql.SQLException:访问拒绝用户'root'@'localhost'(使用密码:是)”。问题是“错误密码”。将查询原样复制并粘贴到shell中,以检查它是否提供了所需的输出。小错误消耗更多时间。
这个异常也是由于mysql db和你的pom.xml/jar版本不匹配造成的。
确保您的pom.xml/jar版本高于您的mysql db版本。 由于较高版本与较低版本兼容,但反之亦然。
解决方案对Java项目
- 替换合适版本的Jar。对Maven
解决方案基于
- 变化的依赖版本中的pom.xml
解决方案春季启动 - 通过添加 5.1.5.Final覆盖春天启动的依赖
我不得不改变我的SQL设置(在我的主机,Dreamhost在我的情况)到所有由于我在计算机上运行IDE中的程序,所以只能使用用户名从其他主机访问数据库,而不仅仅是Dreamhost。我现在通过将%添加到允许主机列表中。它现在工作!
我应该补充说,这与#munchkins方法类似,但是从SQL控制面板结束。 – 2017-11-16 02:32:38
我遇到此错误。问题是我有错误的数据库名称。
这不提供问题的答案。一旦你有足够的[声誉](https://*.com/help/whats-reputation),你将可以[对任何帖子发表评论](https://*.com/help/privileges/comment);相反,[提供不需要提问者澄清的答案](https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- I-DO-代替)。 - [来自评论](/ review/low-quality-posts/18284339) – Mamun 2017-12-18 04:07:00
你能够连接使用MySQL GUI客户端像SqlYog或PhpMyAdmin? – Tomer 2012-08-12 12:56:16
@ ftom2:是的,我可以成功访问'phpmyadmin'。 – ron 2012-08-12 12:59:02
你确定**用户名**和**密码**是否正确? Seesm给我没有这样的用户**根** :(不知道虽然,但你不必提供**数据库名称**太像'Connection con = DriverManager.getConnection(“jdbc:mysql: // localhost; database = mywebsitedb; user = sa; password = thatstrue;“);' – 2012-08-12 13:02:30