La tua configurazione sembra a posto. Questo sembra essere solo un problema di autorizzazioni.
Devi concedere a quell'utente l'accesso in mysql. Mentre Java si connetterà a localhost, lo farà usando tcp/ip, tuttavia in mysql localhost e 127.0.0.1 hanno un significato diverso. L'emissione di questo SQL dovrebbe fare il trucco.
grant all on twitter.* to 'root'@'127.0.0.1' identified by 'mypwd';
Ciò presuppone che Java risolva "localhost" in 127.0.0.1, se le cose continuano a non funzionare, potresti provare a cambiare la stringa di connessione in "jdbc:mysql://127.0.0.1:3306/twitter"
Come hai ora, la password in chiaro.