Gli sviluppatori creano bug. Un tipo di errore (purtroppo) piuttosto comune nelle applicazioni Web con PHP e SQL sono le iniezioni SQL. Una conseguenza di tale bug è che gli estranei ostili possono iniettare del codice SQL arbitrario per essere valutato dal database.
Se hai due account per accedere al database e uno di questi ha solo le autorizzazioni di lettura, allora qualsiasi errore di SQL injection nelle richieste fatte da quel specifico account di sola lettura garantirà solo l'accesso in sola lettura all'attaccante.
È come le porte interne di un sottomarino. Queste porte sono progettate per resistere alla pressione e saranno chiuse in caso di emergenza. In questo modo, se lo scafo viene forato, l'acqua invaderà solo parte del sottomarino, che quindi affonderà più lentamente, e le possibilità di sopravvivenza per l'equipaggio saranno notevolmente migliorate. Usare account separati di lettura e scrittura per MySQL è lo stesso tipo di protezione. Preferiresti comunque non essere colpito da un siluro, comunque; vale a dire che è meglio se non permetti l'esecuzione di iniezioni SQL, usando SQL correttamente (con istruzioni preparate ).