localhost ist etwas Besonderes in MySQL, es bedeutet eine Verbindung über einen UNIX-Socket (oder Named Pipes unter Windows, glaube ich) im Gegensatz zu einem TCP/IP-Socket. Mit % da der Host localhost nicht enthält , daher muss es explizit angegeben werden.