java.sql.SQLException: Acceso denegado para el usuario ‘root’ @ ‘localhost’ (usando la contraseña: YES)

El siguiente código:

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

Lanza esta excepción en 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.(ConnectionImpl.java:813) at com.mysql.jdbc.JDBC4Connection.(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.(Database.java:91) at db.Main.main(Main.java:10) 

¿Cómo es esto causado y cómo puedo resolverlo?

EDITAR:

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

Produce:

 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.(ConnectionImpl.java:813) at com.mysql.jdbc.JDBC4Connection.(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) 

Como está creando una base de datos desde cero, puede usar:

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

Aquí hay un escenario idéntico .

Esto puede ayudarte:

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

Ejecútelo con línea de comando o alguna herramienta GUI.

No olvides reemplazar %password% con contraseña real.

Tuve un problema similar, pero la diferencia fue: no ejecuté mi JavaApp desde localhost , sino desde una PC remota. Así que obtuve algo así como java.sql.SQLException: Access denied for user 'root'@'a.remote.ip.adress' (using password: YES) Para resolver esto, simplemente puede iniciar sesión en phpMyAdmin, ir a los Users , haga clic en add user e ingrese el host desde el cual desea ejecutar su JavaApp (o elija Any Host )

puedes usar esto

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

tienes que dar la contraseña de root correcta.

Debes especificar el db al que te estás conectando:

 jdbc:mysql://localhost:3306/mydb 

Estaba golpeando el mismo problema. El número de puerto del servicio mysql agregado (3307) resolvió el problema.

 conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/?" + "user=root&password=password"); 

Pruébalo así …

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

Aunque puede que esta no sea la causa de su problema, obtendrá el mismo error si hay dos servicios MySQL ejecutándose en el mismo puerto. Puede consultar las ventanas consultando la lista de servicios en la pestaña de servicios del Administrador de tareas.

Esta excepción también se debe a la falta de coincidencia de la versión de mysql db y su pom.xml / jar.

Asegúrese de que su versión pom.xml / jar sea más alta que su versión mysql db. Porque las versiones más altas son compatibles con las versiones más bajas, pero lo mismo no es cierto para las versiones inversas.

Solución para el proyecto de Java

  • Reemplace el tarro con la versión adecuada.

Solución para maven basada

  • Cambiar la versión de dependencia en pom.xml

Solución para el arranque de resorte: anule la dependencia del arranque de resorte añadiendo 5.1.5.Final

Tuve el mismo problema “java.sql.SQLException: Acceso denegado para el usuario ‘root’ @ ‘localhost’ (usando la contraseña: YES)”. El problema fue “CONTRASEÑA INCORRECTA”. Copie y pegue la consulta tal como está en el intérprete de comandos para comprobar si proporciona el resultado deseado o no. Pequeños errores consumen más tiempo.

Tuve que cambiar mi configuración de SQL (en mi servidor, Dreamhost en mi caso) para permitir que el nombre de usuario acceda a la base de datos desde otros hosts, no solo Dreamhost, ya que estoy ejecutando un progtwig desde el IDE en mi computadora. Lo hice por ahora añadiendo% a la lista de hosts permitidos. ¡Ahora funciona!

Esto parece ocurrir principalmente cuando el nombre de usuario y la contraseña de MySQL no son correctos. Compruebe su nombre de usuario y contraseña de MySQL.

Encontré este error. El problema era que tenía un nombre de base de datos incorrecto.