Mysql
 sql >> Database >  >> RDS >> Mysql

Accesso negato per 'utente'@'localhost'

Non credo che questo sia un problema di porta, la richiesta sta raggiungendo la sua destinazione. Utilizzo di [email protected] funzionerà quando si accede tramite la riga di comando (mysql -u root -p ) ma non vuoi usarlo per connetterti con il tuo codice. Tieni presente che quando stabilisci la connessione, devi utilizzare host=localhost o host=127.0.0.1 esplicitamente. Se utilizzi l'indirizzo IP (anche sullo stesso server), ti verrà negato l'accesso.

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

Ecco i passaggi che consiglio di eseguire:

  1. Crea un utente dedicato che puoi utilizzare per la connessione nei tuoi script.
  2. Se l'origine dello script è lo stesso server di MySQL.

    CREATE USER '<user>'@'localhost'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'localhost';
    
  3. Se la connessione viene stabilita sempre dalla stessa posizione ma da una posizione diversa da MySQL, esegui quanto segue sulla riga di comando.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'<IP_address>';
    
  4. Se l'origine della connessione varia, eseguire il comando seguente.

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

Ecco un link alla documentazione se hai domande.