OK, I can re-create your error message by changing my Ansible playbook to leave the MySQL anonymous users in there. You have to make sure you remove those users.
If you don't, then at the end of a failed install you'll have something like this in mysql.user:
mysql> select user,host from mysql.user;
+------------+-----------------+
| user | host |
+------------+-----------------+
| imc_config | % |
| root | 127.0.0.1 |
| root | ::1 |
| | imc.localdomain |
| root | imc.localdomain |
| | localhost |
| root | localhost |
+------------+-----------------+
7 rows in set (0.00 sec)
mysql>
The problem comes from the way MySQL does username/host matching. It looks for most specific hostname match first, then usernames. So if you login as "imc_config"@localhost", then it will look through the host=localhost matches. 'root' doesn't match, but anonymous (the empty username string above) *does* match. So it now tries to match imc@config@localhost against ""@localhost. That account doesn't have permissions to the imc_config DB.
If you remove the anonymous local account, it will then fall back to the wildcard host '%'. It will match imc_config@"%" against your imc_config@localhost login. That will match the passwords + privileges you need.
See here: http://forums.mysql.com/read.php?10,637583,637683#msg-637683 and here: http://dev.mysql.com/doc/refman/5.6/en/connection-access.html for more info on what's going on.