Ik denk niet dat dit een poortprobleem is, het verzoek bereikt zijn bestemming. example@sqldat.com werkt wanneer u zich aanmeldt via de opdrachtregel (mysql -u root -p ) maar je wilt het niet gebruiken om verbinding te maken met je code. Houd er rekening mee dat wanneer u uw verbinding tot stand brengt, u host=localhost . moet gebruiken of host=127.0.0.1 uitdrukkelijk. Als u het IP-adres gebruikt (zelfs op dezelfde server), wordt de toegang geweigerd.
[example@sqldat.com ~]# mysql --host=127.0.0.1 --protocol=TCP -u root -p
Enter password:
mysql>
[example@sqldat.com ~]# 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)
Dit zijn de stappen die ik zou aanraden te nemen:
- Maak een speciale gebruiker aan die u kunt gebruiken om verbinding te maken in uw scripts.
-
Als de bron van het script dezelfde server is als MySQL.
CREATE USER '<user>'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'localhost'; -
Als de verbinding altijd tot stand wordt gebracht vanaf dezelfde plaats maar een andere locatie dan MySQL, voert u het volgende uit op de opdrachtregel.
CREATE USER '<user>'@'<IP_address>' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'<IP_address>'; -
Als de bron van de verbinding varieert, voert u de volgende opdracht uit.
CREATE USER '<user>'@'<IP_address>' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'%';
Hier is een link naar de documentatie als je vragen hebt.