Nie sądzę, że jest to problem z portem, żądanie dociera do celu. Korzystanie z example@sqldat.com zadziała podczas logowania z wiersza poleceń (mysql -u root -p ), ale nie chcesz go używać do łączenia się z kodem. Pamiętaj, że podczas nawiązywania połączenia musisz użyć host=localhost lub host=127.0.0.1 wyraźnie. Jeśli użyjesz adresu IP (nawet na tym samym serwerze), otrzymasz odmowę dostępu.
[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)
Oto kroki, które polecam:
- Utwórz dedykowanego użytkownika, którego możesz używać do łączenia się w swoich skryptach.
-
Jeśli źródłem skryptu jest ten sam serwer co MySQL.
CREATE USER '<user>'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'localhost'; -
Jeśli połączenie jest zawsze nawiązywane z tego samego miejsca, ale z innej lokalizacji niż MySQL, uruchom następujące polecenie w wierszu poleceń.
CREATE USER '<user>'@'<IP_address>' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'<IP_address>'; -
Jeśli źródło połączenia jest inne, uruchom następujące polecenie.
CREATE USER '<user>'@'<IP_address>' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'%';
Oto link do dokumentacji jeśli masz jakieś pytania.