MySQL: Acceso denegado para el usuario ‘userName’ @ ‘localhost’

Tengo un problema con la creación y la comstackción de permisos para un usuario que usa phpMyAdmin. Tengo una aplicación Java swing y necesito conectarme a esta base de datos.

La forma en que creé al usuario y le concedí el permiso se encuentra a continuación, paso a paso.

  1. Abre phpMyAdmin
  2. Ir a la pestaña ‘Usuarios’.
  3. Haga clic en Add New User
  4. Proporcione el nombre de usuario, seleccione Any Host como el host (para que aparezca el% en su cuadro de texto) y mencione la contraseña. Any host es porque se requiere acceso remoto.
  5. Seleccionar Select bajo Global PrivilegesData
  6. Haga clic en Go
  7. Ahora estoy en la página de inicio de la pestaña Users nuevo.
  8. Haga clic en Edit Privileges en mi usuario recién creado.
  9. Seleccione la base de datos bajo Database-specific privileges la base de Database-specific privileges
  10. Marque todo en Database-specific privileges Data , sección Data .
  11. Haga clic en Go

Ahora, cada vez que mi aplicación Java se conecta a esto, da el siguiente error

 java.sql.SQLException: Access denied for user 'userName'@'localhost' (using password: YES) 

Así es como me conecto a la base de datos, en mi aplicación Java.

 con = DriverManager.getConnection("jdbc:mysql://"+ip+":3306/databaseName","user","password"); 

Aquí, para la variable ip , probé tanto localhost como 127.0.0.1 pero aún no está bien. ¿Qué he hecho mal?

Noté que la conexión funciona bien si selecciono Localhost lugar de Any Host en el paso 4.

  • Después de haber hecho su usuario.
  • Haga clic en editar privilegios.
  • Cambiar cualquier host para Localhost.
  • Aplica tus privilegios.
  • Desplácese hasta la parte inferior y
  • asegúrese de que esté seleccionado “conservar el antiguo” y presione Ir.

Debe otorgar permisos al nombre de usuario @ localhost en mysql.

 GRANT ALL PRIVILEGES ON database_name TO userName@localhost IDENTIFIED BY 'password'; FLUSH PRIVILEGES; 

a veces, el servidor mysql no obtiene un ‘localhost’ de una conexión local, debe intentar:

 GRANT ALL PRIVILEGES ON database_name TO 'userName'@'theHostName' IDENTIFIED BY 'password'; 

o de una manera más arriesgada:

 GRANT ALL PRIVILEGES ON database_name TO 'userName'@'%' IDENTIFIED BY 'password'; 

y finalmente

 FLUSH PRIVILEGES; 

¿Ha establecido alguna contraseña para el phpmyadmin. Si es así, por favor, incluya eso en el campo de contraseña. O puede probar esto

 con = DriverManager.getConnection("jdbc:mysql://"+ip+":3306/databaseName","localhost","");