penso che non ci sia nulla nel tuo codice che possa causare questo tipo di errore, come puoi vedere nell'errore
Access denied for user 'root'@'localhost' (using password: YES)
mostra che il problema riguarda il tuo utente o password, quindi controlla ancora una volta che il tuo utente e password siano corretti se stai usando la password per l'utente del database.