La tua soluzione funzionerebbe solo in un ristretto insieme di circostanze. È raro che l'utente del database e la persona che visualizza il tuo sito web abbiano esattamente lo stesso set di permessi, che è lo scenario che stai immaginando.
Immagina questo scenario:
seleziona passwordhash da usernamePasswordtable dove username = $ username;
Anche se potessi limitare questo a un utente di DB che esegue SOLO accessi, E il tuo database consente di limitare l'accesso fino al livello di riga (in genere non l'ho visto), devi comunque aprire l'accesso all'utente di login a tutti gli utenti attivi nella tabella usernamePassword. Un attacco di SQL injection potrebbe facilmente consentire a un utente malintenzionato di accedere come utente diverso, dato che potrebbero inserire qualsiasi cosa a loro piace in $ username.
Ci sono anche molti altri problemi, il minimo dei quali è avere un utente del database per ogni singolo utente del tuo sito web.
L'unico scenario in cui ciò potrebbe funzionare è se il tuo sito web è interamente pubblico e tutto nel tuo database è già pubblicato sul tuo sito web. Quindi eseguire la lettura sola potrebbe funzionare.