Tôi không nghĩ đây là vấn đề về cổng, yêu cầu đang đến đích. Sử dụng [email protected]
sẽ hoạt động khi đăng nhập thông qua dòng lệnh (mysql -u root -p
) nhưng bạn không muốn sử dụng nó để kết nối với mã của mình. Hãy nhớ rằng khi thiết lập kết nối, bạn cần sử dụng host=localhost
hoặc host=127.0.0.1
một cách rõ ràng. Nếu bạn sử dụng địa chỉ IP (ngay cả trên cùng một máy chủ), bạn sẽ bị từ chối truy cập.
[[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)
Dưới đây là các bước tôi khuyên bạn nên thực hiện:
- Tạo một người dùng chuyên dụng mà bạn có thể sử dụng để kết nối trong các tập lệnh của mình.
-
Nếu nguồn của tập lệnh là cùng một máy chủ với MySQL.
CREATE USER '<user>'@'localhost' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'localhost';
-
Nếu kết nối luôn được thiết lập từ cùng một nơi nhưng ở một vị trí khác với MySQL, hãy chạy phần sau trên dòng lệnh.
CREATE USER '<user>'@'<IP_address>' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'<IP_address>';
-
Nếu nguồn kết nối khác nhau, hãy chạy lệnh sau.
CREATE USER '<user>'@'<IP_address>' IDENTIFIED BY 'password'; GRANT ALL ON <database>.* TO '<user>'@'%';
Đây là liên kết đến tài liệu nếu bạn có bất kỳ câu hỏi nào.