Ik denk niet dat dit een poortprobleem is, het verzoek bereikt zijn bestemming. [email protected]
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.
[[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)
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.