Às vezes, em php/mysql, há uma diferença entre localhost e 127.0.0.1
No mysql você concede acesso com base no nome do host, para usuários locais isso seria localhost. Eu vi php tentando se conectar com 'myservername' em vez de localhost embora na configuração 'localhost' tenha sido definido.
Tente conceder acesso no mysql para 127.0.0.1 e conecte no php pela porta 3306 127.0.0.1.