Saya tidak berpikir ini adalah masalah port, permintaan mencapai tujuannya. Menggunakan example@sqldat.com akan berfungsi saat masuk melalui baris perintah (mysql -u root -p ) tetapi Anda tidak ingin menggunakannya untuk menghubungkan dengan kode Anda. Ingatlah bahwa saat membuat koneksi, Anda harus menggunakan host=localhost atau host=127.0.0.1 secara eksplisit. Jika Anda menggunakan alamat IP (bahkan di server yang sama), Anda akan mendapatkan penolakan akses.
[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)
Berikut adalah langkah-langkah yang saya sarankan untuk dilakukan:
- Buat pengguna khusus yang dapat Anda gunakan untuk menghubungkan skrip Anda.
-
Jika sumber skrip adalah server yang sama dengan MySQL.
CREATE USER '<user>'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'localhost'; -
Jika koneksi selalu dibuat dari tempat yang sama tetapi lokasi yang berbeda dari MySQL, jalankan perintah berikut pada baris perintah.
CREATE USER '<user>'@'<IP_address>' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'<IP_address>'; -
Jika sumber koneksi berbeda-beda, jalankan perintah berikut.
CREATE USER '<user>'@'<IP_address>' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'%';
Berikut ini tautan ke dokumentasi jika Anda memiliki pertanyaan.