sql >> Databasteknik >  >> RDS >> Mysql

Åtkomst nekad för 'user'@'localhost'

Jag tror inte att detta är ett hamnproblem, förfrågan når sin destination. Använda [email protected] kommer att fungera när du loggar in via kommandoraden (mysql -u root -p ) men du vill inte använda den för att ansluta med din kod. Tänk på att när du upprättar din anslutning måste du använda host=localhost eller host=127.0.0.1 uttryckligen. Om du använder IP-adressen (även på samma server) kommer du att nekas åtkomst.

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

Här är stegen jag rekommenderar att du tar:

  1. Skapa en dedikerad användare som du kan använda för att ansluta i dina skript.
  2. Om skriptkällan är samma server som MySQL.

    CREATE USER '<user>'@'localhost'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'localhost';
    
  3. Om anslutningen alltid upprättas från samma plats men en annan plats än MySQL, kör följande på kommandoraden.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'<IP_address>';
    
  4. Om källan till anslutningen varierar, kör följande kommando.

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

Här är en länk till dokumentationen om du har några frågor.




  1. Är SQLFiddle trasig? Fel för Oracle, SQL Server, ...?

  2. Hur konverterar man dessa konstiga karaktärer? (ë, Ã, ì, ù, Ã)

  3. Hur ser jag högprecisionsfrågetider i mysql-kommandoraden?

  4. Undantag i huvudtråden java.sql.SQLEUndantag:Åtkomst nekad för användare ''@'localhost' (med lösenord:NO)