Existem quatro (4) CENÁRIOS para prestar atenção
CENÁRIO 1
Quando você especificar, -P<port number>você deve estar usando o TCP / IP. Assim, -h<IPAddress>funcionaria.
CENÁRIO # 2
Quando você especifica -P<port number>sem -h<IPAddress>, localhosté assumido. Com isso acontecendo, o TCP / IP não é usado, mas o arquivo de soquete mysql é usado para autenticar.
CENÁRIO # 3
Quando você especifica -h127.0.0.1sem -P<port number>, localhosté assumido. Com isso acontecendo, o TCP / IP não é usado, mas o arquivo de soquete mysql é usado para autenticar.
CENÁRIO # 4
Quando você especifica -h127.0.0.1com -P<port number>, localhostnão é assumido. O TCP / IP será usado, mas o usuário deve ser definido corretamente.
Dada a mensagem de erro:
ERRO 1045 (28000): Acesso negado para o usuário '' @ 'localhost' (usando a senha: YES)
e do jeito que você tentou fazer o login
mysql -u -p -P9906 -h127.0.0.1
Você atingiu o CENÁRIO # 4
SUGESTÃO
Em mysql.user, verifique se você tem
user@localhost (Está bem)
user@127.0.0.1, (Está bem)
user@% (não recomendado mas pode fazer)
com a mesma senha (ou senhas diferentes se desejado)
Depois de conseguir fazer o login com êxito, execute esta consulta
SELECT USER(),CURRENT_USER();
USER () relata como você tentou autenticar no MySQL
CURRENT_USER () relata como você foi autorizado a autenticar no MySQL
Adicionar o usuário certo permite autenticar corretamente. Seu objetivo deve ser o de usuários de configuração no mysql.userde tal forma que USER()e CURRENT_USER()tem saída idêntica ou pelo menos como possível específico do host.
my.ini. Isto existe? Está no lugar correto e acessível? Você mudou alguma coisa relacionada ao nome do host?