用户'root'@'localhost'被拒绝访问(使用密码:YES):PhpMyAdmin。

3

给定以下代码:

package db;

import java.sql.*;

public class Main
{
    public static void main (String[] args) throws ClassNotFoundException, SQLException
    {

        Class.forName("com.mysql.jdbc.Driver");

        String string = "jdbc:mysql://localhost:3306/testdb";

        Connection con = DriverManager.getConnection(string , "root" , "root");
        PreparedStatement statement = con.prepareStatement("select * from name");
        ResultSet result = statement.executeQuery();
        while (result.next())
        {
            System.out.println(result.getString(1) + " " + result.getString(2));
        }


    }
}

我试图连接MySQL服务器,但是出现以下错误:

Exception in thread "main" 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:14)

第14行代码是这样的:Connection con = DriverManager.getConnection(string , "root" , "root");

我确定在安装MySql时输入了密码root。为了确保,我在这里输入:to this,并更改了密码为root,像这样:enter image description here,但我仍然无法获得任何正确的输出。

有什么问题吗?

谢谢

备注: 为了明确起见,我使用的是:

  1. Eclipse Java EE IDE for Web Developers.

  2. Tomcat 7

  3. Xampp


你能打开phpMyAdmin并在那里运行查询吗?看起来连接没有打开。 - Muhammad Imran Tariq
@imrantariq:现在我被锁在了 phpMyAdmin 外面。我按照建议删除了一些行,但现在它让我无法进入,显示 MySQL said: #1045 - Access denied for user 'root'@'localhost' (using password: NO) - JAN
这意味着您无法打开phpMyAdmin。对吗? - Muhammad Imran Tariq
@imrantariq:是的,但现在我已经删除了所有内容并重新安装了mysql&xampp&tomcat7,我又回来了。然而,我仍然从mysql获取有关javajdbc连接的相同输出。 - JAN
3个回答

2

在主线程中发生异常:java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

当用户没有访问本地主机的权限时,会出现此错误。

您需要授予 root 用户从 localhost 访问的权限。

由于您已添加了 mySQL 设置中的 password='NO' 行,我怀疑问题出在这里。


0

使用您的用户名和密码执行以下命令:

grant usage on *`.`* to `devuser@localhost` identified by '`devpassword`';
grant all privileges on `dev.` to `devuser@localhost`;

替换 star.star 显示不正确。因此,请在“grant usage on”之后立即使用 star.star,而不仅仅是点号。 - vvs

-1

您的问题与phpMyAdmin无关,它只是一个接口。

此外,我认为您应该删除密码为“NO”的行。


你确定吗?因为上次我这样做后,我的账户权限被撤销了。 - JAN
嗯,在我们的服务器上,root用户有4个密码为“YES”的行,包括localhost和127.0.0.1。您也可以删除“ANY”行。而且您的代码应该在同一台机器上运行,或者在一个隧道机器上运行。 - kommradHomer
我的答案是正确的,与所选答案相同。而且我是第一个回答的。为什么会被踩?!!?! - kommradHomer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接