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:
- Erstellen Sie einen dedizierten Benutzer, den Sie für die Verbindung in Ihren Skripten verwenden können.
-
Wenn die Quelle des Skripts derselbe Server wie MySQL ist.
CREATE USER '<user>'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'localhost';
-
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>';
-
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.