localhost es especial en MySQL, significa una conexión a través de un zócalo UNIX (o canalizaciones con nombre en Windows, creo) en lugar de un zócalo TCP/IP. Usando % ya que el host no incluye localhost , de ahí la necesidad de especificarlo explícitamente.