You need to have a separate row in the mysql.user table with a host value of 'localhost', to enable local unix socket type connections.
A value of '%' in the host column is for the TCP protocol.
Details in the documentation here: http://dev.mysql.com/doc/refman/5.5/en/connecting.html
I have three rows for a user in the mysql.user table, with host values of 'localhost' (for unix socket type connections), '127.0.0.1' for access via TCP from the local host, and '%' for TCP access from other hosts.
Note that MySQL identifies a user not just by the "username", but as the combination of "username" and "host". These are considered distinct users, and each of them can have a different password and a different set of privileges.