Myslím, že ve vašem kódu není nic, co způsobí chybu tohoto typu, jak můžete vidět v chybě
Access denied for user 'root'@'localhost' (using password: YES)
ukazuje to, že problém je s vaším uživatelem nebo heslem, takže pokud používáte heslo pro uživatele databáze, zkontrolujte ještě jednou správnost vašeho uživatele a hesla.