sql >> Base de Datos >  >> RDS >> Mysql

Acceso denegado para 'usuario'@'localhost'

No creo que esto sea un problema de puerto, la solicitud está llegando a su destino. Usando [email protected] funcionará al iniciar sesión a través de la línea de comando (mysql -u root -p ) pero no desea usarlo para conectarse con su código. Tenga en cuenta que al establecer su conexión, debe usar host=localhost o host=127.0.0.1 explícitamente. Si usa la dirección IP (incluso en el mismo servidor), se le denegará el acceso.

[[email protected] ~]# mysql --host=127.0.0.1 --protocol=TCP -u root -p
Enter password:
mysql>
[[email protected] ~]# mysql --host=192.168.1.10 --protocol=TCP -u root -p
Enter password:
ERROR 1045 (28000): Access denied for user 'root'@'hostname' (using password: YES)

Estos son los pasos que recomiendo seguir:

  1. Cree un usuario dedicado que pueda usar para conectarse en sus scripts.
  2. Si la fuente del script es el mismo servidor que MySQL.

    CREATE USER '<user>'@'localhost'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'localhost';
    
  3. Si la conexión siempre se establece desde el mismo lugar pero en una ubicación diferente a MySQL, ejecute lo siguiente en la línea de comando.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'<IP_address>';
    
  4. Si la fuente de la conexión varía, ejecute el siguiente comando.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'%';
    

Aquí hay un enlace a la documentación si tiene alguna pregunta.