2012-08-12 291 views
29

El siguiente código:java.sql.SQLException: Acceso denegado de 'root' @ 'localhost' usuario (usando la contraseña: SÍ)

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

emite 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.<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) 

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

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

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.<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) 
+1

¿puede conectarse utilizando el cliente de la GUI de MySQL como SqlYog o PhpMyAdmin? – Tomer

+1

@ ftom2: Sí, puedo acceder 'phpmyadmin' con éxito. – ron

+1

¿Está seguro de que el ** Nombre de usuario ** y la ** Contraseña ** que se proporciona son los correctos? Me parece que no hay un usuario como ** root ** :(No estoy seguro, pero no tienes que proporcionar el ** Database Name ** también como 'Connection con = DriverManager.getConnection (" jdbc: mysql: // localhost; database = mywebsitedb; user = sa; password = thatstrue; ");' –

Respuesta

8

Como está creando una base de datos a partir de cero, que 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í es un identical scenario.

+0

¿Si no tengo ninguna base de datos? y quiero crear la base de datos usando código java, y NO manualmente en 'phpmyadmin', entonces' databaseName' no es relevante? – ron

+0

Ok, disculpas, se han actualizado con la nueva sintaxis – Reimeus

+0

Por favor, mira la publicación editada. – ron

1

Pruébalo como esto ....

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

¿Por qué exactamente resolvería el problema concreto? No estás explicando la causa de ninguna manera. – BalusC

2

Se debe especificar el PP se está conectando a:

jdbc:mysql://localhost:3306/mydb 
38

Esto puede ayudarle a:

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

ejecutarlo con la línea de comandos o alguna herramienta de interfaz gráfica de usuario.

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

+4

Probablemente debería cambiar "IDENTIFICADO POR 'root'" a "IDENTIFICADO POR 'contraseña'" para evitar confusiones. – Pranjal

+0

@Pranjal tienes razón. Gracias. He editado la respuesta. – evg

+1

@evg He ejecutado con éxito esta consulta, pero todavía no me deshago de este error –

1

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

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

que tenía un problema similar, pero el differemce fue: yo no ejecuté mi JavaApp de localhost, pero desde un PC remoto. Así que me dio algo así como java.sql.SQLException: Access denied for user 'root'@'a.remote.ip.adress' (using password: YES) Para solucionar esto, simplemente puede iniciar sesión en phpMyAdmin, ir a Users, haga clic add user y entrar en el host desde el que se desea ejecutar su JavaApp (o seleccione Any Host)

3

se puede utilizar este

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.

1

Aunque esta puede no ser 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.

+0

Este es un comentario, no una respuesta. –

0

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.

1

Esta excepción también se debe a una versión no coincidente de mysql db y su pom.xml/jar.

Asegúrate de que tu versión pom.xml/jar sea más alta que tu 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.

de Solución para el proyecto java

  • Sustituir el tarro con la versión adecuada.

Solución para experta basada

  • Cambiar la dependencia Versión en pom.xml

Solución para el inicio en la primavera - Anulación de la dependencia de arranque de primavera añadiendo 5.1.5.Final

0

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

+0

Debo agregar que esto es similar al enfoque #munchkins pero desde el final del panel de control de SQL. –

0

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

+0

Esto no proporciona una respuesta a la pregunta. Una vez que tenga suficiente [reputación] (https://stackoverflow.com/help/whats-reputation) podrá [comentar cualquier publicación] (https://stackoverflow.com/help/privileges/comment); en su lugar, [brinde respuestas que no requieran aclaración del autor de la pregunta] (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- i-do-instead). - [De la crítica] (/ reseña/mensajes de baja calidad/18284339) – Mamun

Cuestiones relacionadas