Tôi đã gặp vấn đề tương tự sau khi nhận được hộp CentOS 7 mới, đang chạy SELinux. Tôi có thể kết nối với máy chủ MySQL DB từ xa của mình từ dòng lệnh, nhưng Drupal (và các tập lệnh PHP thử nghiệm) thì không thể.
Vấn đề hóa ra là do các chính sách bảo mật của SELinux.
Theo mặc định, chính sách httpd_can_network_connect_db bị vô hiệu hóa (có nghĩa là máy chủ web của bạn không thể liên hệ với một DB từ xa.)
Kiểm tra điều này qua:
getsebool -a | grep httpd
Nếu httpd_can_network_connect_db đang Tắt, hãy bật nó qua:
setsebool -P httpd_can_network_connect_db 1
(Cờ -P thực hiện thay đổi vĩnh viễn, vì vậy cài đặt vẫn tồn tại sau khi khởi động lại.)