Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zugriff verweigert für 'user'@'localhost'

Ich glaube nicht, dass dies ein Portproblem ist, die Anfrage erreicht ihr Ziel. Verwenden von [email protected] funktioniert, wenn Sie sich über die Befehlszeile anmelden (mysql -u root -p ), aber Sie möchten es nicht für die Verbindung mit Ihrem Code verwenden. Denken Sie daran, dass Sie beim Herstellen Ihrer Verbindung host=localhost verwenden müssen oder host=127.0.0.1 ausdrücklich. Wenn Sie die IP-Adresse verwenden (sogar auf demselben Server), wird Ihnen der Zugriff verweigert.

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

Hier sind die Schritte, die ich empfehlen würde:

  1. Erstellen Sie einen dedizierten Benutzer, den Sie für die Verbindung in Ihren Skripten verwenden können.
  2. Wenn die Quelle des Skripts derselbe Server wie MySQL ist.

    CREATE USER '<user>'@'localhost'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'localhost';
    
  3. Wenn die Verbindung immer vom selben Ort, aber einem anderen Ort als MySQL hergestellt wird, führen Sie Folgendes in der Befehlszeile aus.

    CREATE USER '<user>'@'<IP_address>'
    IDENTIFIED BY 'password';
    GRANT ALL
    ON <database>.*
    TO '<user>'@'<IP_address>';
    
  4. Wenn die Verbindungsquelle unterschiedlich ist, führen Sie den folgenden Befehl aus.

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

Hier ist ein Link zur Dokumentation wenn Sie Fragen haben.