Sam znalazłem rozwiązanie swojego problemu, ale nadal nie do końca rozumiem, dlaczego to nie zadziałało:
Przydzieliłem temu użytkownikowi uprawnienia na hostach % i localhost:
# Before
+-----------------+------------+
| Host | User |
+-----------------+------------+
| % | username |
| localhost | username |
+-----------------+------------+
Dzięki tym ustawieniom uzyskałem wyniki, które pokazałem powyżej. Kiedy przyznałem uprawnienia temu użytkownikowi na hoście, nagle zadziałało.
# After
+-----------------+------------+
| Host | User |
+-----------------+------------+
| % | username |
| localhost | username |
| <myIpAddress> | username |
+-----------------+------------+
Najwyraźniej % działa dla połączeń zdalnych, ale nie dla połączeń lokalnych.