decoding

Can’t connect to mysql server (13) from http

Reading Time: < 1 minuteFavoriteLoadingAggiungi ai preferiti

Se il vostro sito web, applicazione o script, vi stampa il messaggio “Can’t connect to mysql server (13)” aprendolo nel browser, mentre se provate a chiamarlo da CLI (Command Line Interface) la connessione va a buon fine, le motivazioni posso essere diverse.

Potreste aver impostato i parametri di connesione al database in maniera errata, il server mysql potrebbe essere spento, ma quello sui cui vogliamo concentrare l’attenzione qui è dovuto a l’impossibilità del server web di collegarsi al server mysql.

Partiamo dal presupposto che la situazione sia questa:

  • VM1 è il server web su cui gira la nostra applicazione (e-commerce, sito web, applicazione)
  • VM2 è il server MySQL che ospita i dati della nostra applicazione

Come vediamo il server web, Apache in questo caso, e il server MySQL sono ospitati da due server distinti , che potrebbero trovarsi nella stessa rete locale; le due macchine hanno ip diversi, per forza direte voi 🙂

La configurazione per la connessione al server MySQL della nostra applicazione sarà quindi del tipo

HOST = '191.168.1.1';
USERNAME = 'admin';
PASSWORD 'password';

In una situazione come questa può succedere che, se lanciamo la nostra applicazione tramite CLI la connessione vada a buon fine, mentre, se apriamo l’applicazione via web (https://miosito.com) otteniamo come risposta l’errore “Can’t connect to mysql server (13)”.

Questo è dovuto all’impossibilità del web server di connettersi in remoto al database.

Per risolvere dobbiamo quindi “Abilitare l’accesso remoto a MySQL nel server web” e possiamo farlo lancianod il comando

setsebool httpd_can_network_connect_db=1

direttamente sul server web