Причина в невнимательном чтении (вернее, в НЕчтении) документации на MySQL.
При указании имени сервера localhost библиотека ВСЕГДА будет пытаться подключиться через локальный сокет (*NIX) или именованный канал (Win). Какой-то дурак решил, что "так будет быстрее". Будет ли это работать вообще, он, явно, не подумал...
Чтобы заставить библиотеку вешаться на TCP/IP независимо от того, локальный сервер это или нет, надо указать адрес вместо имени.