Em vez desta afirmação
grant all privileges on hellodb to hellouser identified by '123';
Tente este abaixo - >
grant all privileges on hellodb.* to 'hellouser'@'localhost' identified by '123';
Pergunta extremamente básica, mas estou puxando o cabelo para fora tentando descobrir isso:
mysql> create database hellodb;
Query OK, 1 row affected (0.00 sec)
mysql> grant all privileges on hellodb to hellouser identified by '123';
Query OK, 0 rows affected (0.00 sec)
mat@admin:~$ mysql -u hellouser hellodb -p
Enter password:
ERROR 1045 (28000): Access denied for user 'hellouser'@'localhost' (using password: YES)
Esta é uma instância do Amazon EC2, portanto há complicações. Há um endereço IP interno e um endereço IP externo, e o MySQL só pode ser configurado para escutar em um deles. Eu escolhi o endereço IP externo. Mas eu não acho que isso importe: os comandos acima devem funcionar, e eu tentei todas as variantes do endereço do host que eu posso imaginar (localhost, ip interno, ip externo, fqdn,%).
Este é o Ubuntu Trusty, então as coisas normalmente funcionam (em oposição ao Debian e sua estratégia de design "quebrado por padrão para sua paz de espírito").
Existe alguma maneira de depurar essas mensagens de erro "Acesso negado"? Existe uma maneira de depurar se o MySQL está insatisfeito com a senha, ou o endereço IP, ou o nome do usuário, ou os privilégios?
Existem inúmeras combinações possíveis que podem causar esse problema, e o googling mostra uma grande confusão sobre isso. Se houvesse alguma maneira de separar a causa real que seria realmente útil.
Tags mysql amazon-ec2 ubuntu