1: Se qualcuno ha accesso al tuo server, niente di tutto questo aiuta. Se l'applicazione può eseguire una query sul database, è possibile modificare l'applicazione per effettuare una query arbitraria.
Una cosa che puoi fare è utilizzare account di database separati per, ad esempio, lettura e scrittura, o per informazioni sensibili e non sensibili. Quindi l'SQL injection ne comprometterà solo uno, anche se questo non ti comprerà molto.
2: Qualcuno ottiene il privilegio di root da un account utente usando un "attacco di escalation di privilegi". Potrebbero sfruttare una vulnerabilità del kernel o del driver, un insicuro programma setuid o indovinare la password di root. Tieni presente che un utente malintenzionato non ha necessariamente bisogno dell'accesso root per causare danni: con un account utente, in genere possono leggere i tuoi dati, impostare la persistenza, ruotare su altri server, ecc. Probabilmente non possono ottieni le tue password del sistema operativo, installa un rootkit del kernel, o cancella i registri, però, quindi ci sono sicuramente alcuni vantaggi nell'ottenere la root.
3: È l'hashing della password, non la crittografia della password. Hashcat è probabilmente lo strumento più popolare, ma uno strumento più vecchio che potresti ricercare è chiamato "John the Ripper" (preferibilmente con la "patch Jumbo").