Java.SQL.SQLException: Accès refusé à l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: oui)

Le code suivant:

Class.forName("com.mysql.jdbc.Driver");
Connection m_connection = DriverManager.getConnection("jdbc:mysql://localhost","root","root");

jette cette exception sur 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)

Comment est-ce causé et comment puis-je le résoudre?

EDIT:

    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();
        }
}

Produit :

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)
33
demandé sur Cœur 2012-08-12 16:51:43

14 réponses

comme vous créez une base de données à partir de zéro, vous pouvez utiliser:

Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/?user=root&password=rootpassword"); 
PreparedStatement ps = connection.prepareStatement("CREATE DATABASE databasename");
int result = ps.executeUpdate();

Voici un identiques scénario.

9
répondu Reimeus 2015-12-09 18:59:55

Cela peut vous aider:

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION;

L'exécuter avec une ligne de commande ou un outil GUI.

N'oubliez pas de remplacer %password% avec un vrai mot de passe.

42
répondu evg 2016-07-05 21:57:24

j'ai eu un problème similaire, mais la différence était: je N'ai pas exécuté mon JavaApp de localhost, mais à partir d'un PC distant. Je me suis donc quelque chose comme java.sql.SQLException: Access denied for user 'root'@'a.remote.ip.adress' (using password: YES) Pour résoudre cela, vous pouvez simplement vous connecter à phpMyAdmin, allez à Users, cliquez sur add user et entrez l'hôte à partir duquel vous voulez exécuter votre JavaApp (ou choisissez Any Host)

5
répondu Munchkin 2015-06-20 18:16:53

vous pouvez utiliser ce

   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);

vous devez donner le bon mot de passe root .

3
répondu SR230 2015-10-13 13:43:02

vous devez spécifier le db auquel vous vous connectez:

jdbc:mysql://localhost:3306/mydb
2
répondu evg 2014-06-03 16:05:51

j'ai été frappé de la même question. Ajouté le numéro de port de service mysql (3307), résolu le problème.

conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/?" + "user=root&password=password");
1
répondu Satish Hunasikatti 2013-07-05 11:39:28

essayez comme ceci....

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);
}
1
répondu Kumar Vivek Mitra 2015-11-06 09:55:57

bien que ce ne soit peut-être pas la cause de votre problème, vous obtiendrez la même erreur s'il y a deux services MySQL fonctionnant sur le même port. Vous pouvez le vérifier sur windows en consultant la liste des services dans l'onglet services du Gestionnaire des Tâches.

1
répondu dave 2016-06-21 20:00:34

cette Exception est également causée en raison de l'inadéquation de la version de mysql db et de votre pom.xml / jar.

assurez-vous de votre pom.la version xml/jar est plus haute que votre version mysql db. Parce que les versions supérieures sont compatibles avec les versions inférieures, mais la même chose n'est pas vraie pour l'inverse.

la Solution est pour le projet java

  • remplacer le bocal par la version appropriée.

la Solution pour maven fonction

  • Modifier la dépendance Version en pom.xml

Solution pour botte de printemps - Outrepasser la dépendance de démarrage à ressort en ajoutant 5.1.5.Final

1
répondu Gani 2017-11-03 05:20:50

j'ai eu le même problème "de java.SQL.SQLException: Accès refusé pour l'utilisateur 'root' @ 'localhost' (en utilisant le mot de passe: oui)". Le problème était "mauvais mot de passe". Copiez et collez la requête as-it-is dans le shell pour vérifier si elle donne la sortie désirée ou non. Les petites erreurs prennent plus de temps.

0
répondu Pratyush Raunak 2016-09-08 20:41:49

j'ai dû changer ma configuration SQL (dans mon hôte, Dreamhost dans mon cas) pour permettre au nom d'utilisateur d'accéder à la base de données à partir d'autres hôtes, pas seulement Dreamhost puisque j'exécute un programme à partir de l'IDE sur mon ordinateur. Je l'ai fait pour l'instant en ajoutant le % à la liste des hôtes autorisés. Il fonctionne maintenant!

0
répondu Chris Appleby 2017-11-16 02:18:44

cela semble se produire surtout lorsque le nom D'utilisateur et le mot de passe MySQL ne sont pas corrects. Vérifiez votre nom D'utilisateur et votre mot de passe MySQL.

0
répondu Sarjita Konjengbam 2018-05-29 14:45:09

ceci est spécifique à Ubuntu 18.04 LTS et MySQL 5.x Suivi de ceci lien Suivez tout partir d'ici:

sudo mysql_secure_installation

sudo mysql

une fois connecté à MySQL, exécutez ces commandes à partir de L'invite MySQL:

ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
FLUSH PRIVILEGES;

vérifiez maintenant que la table a le mot de passe pour la racine

SELECT user,authentication_string,plugin,host FROM mysql.user;

ceci a résolu mon problème et maintenant je peux me connecter.

0
répondu Ashu 2018-09-23 04:41:30

j'ai rencontré cette erreur. Le problème était que j'avais le mauvais nom de base de données.

-1
répondu nong thieu 2017-12-18 04:49:53