SQLSTATE[HY000] [2003] Can’t connect to MySQL server (13)
Une application PHP retourne l’erreur SQLSTATE[HY000] [2003] Can’t connect to MySQL server on ‘10.0.0.1’ (13)
L’erreur (13) est ‘EACCES – Permission denied‘, une trace réseau avec tcpdump ne laisse voir aucune tentative d’établissement de la session TCP vers le serveur de base de données.
En fait lorsque SELinux est activé il est nécessaire d’autoriser apache à se connecter à la base de données MySQL en utilisant le réseau (c’est fait habituellement via le port 3306).
La modification doit être faite de façon dynamique (donc perdue au reboot) pour les tests, puis de façon permanente (-P) une fois la modification testée et validée.
setsebool httpd_can_network_connect_db on setsebool -P httpd_can_network_connect_db on
De la même façon si vous souhaitez envoyer des emails avec Apache lorsque SELinux est activé il faut le spécifier:
setsebool -P httpd_can_sendmail on
L’image est issue du livre ‘The SELinux Coloring Book‘ de Dan Walsh illustré par Máirín Duffy, il s’agit d’un petit livre de coloriage qui explique SELinux aux (grands) enfants, une façon originale de vulgariser un sujet plutôt technique est souvent présenté de manière rébarbative. Au delà de l’aspect ludique c’est une introduction rapide à SELinux.
Le livre de coloriage est disponible à cette adresse: http://blog.linuxgrrl.com/2014/04/16/the-selinux-coloring-book/