Você deve remover a entrada raiz extra @ localhost. Isso pode ser feito com "--skip-grant-tables" como sugerido por Mircea Vutcovici ou em uma sessão normal (local ou remota) se você ainda puder acessar como root.
Tente algo assim:
#get to admin tables
use mysql
#confirm the differences for the root entries
select host, user, grant_priv from user where user = 'root';
#adjust as needed
delete from user where user = 'root' and host = 'localhost' and grant_priv = 'N';
#commit
flush privileges;
Update : De acordo com a saída que você mostrou para o teste de seleção, não parece que você tenha um problema com várias raízes com grant_privs diferentes. Portanto, se o conselho dado por Mircea Vutcovici não resolver o seu problema, eu posso supor que o verdadeiro problema está nas privs de root. Talvez você esteja fazendo outra coisa incorretamente, como tentar se conectar ao host errado ou usando uma senha salva em um arquivo de configuração (.my.cnf). Em outras palavras, você pode precisar ser mais específico.