Je suis tombé sur cette erreur et c'était dû à un refus de SELinux. /usr/bin/httpd n'avait pas la permission de se connecter au port 3306. J'ai corrigé le problème avec :
setsebool httpd_can_network_connect_db on
Semble fonctionner très bien et devrait être plus sécurisé que la simple désactivation de SELinux. Comme le souligne Avinash Meetoo ci-dessous, vous pouvez utiliser :
setsebool -P httpd_can_network_connect_db
Pour que le changement selinux persiste lors des redémarrages.