Acesso ao servidor MySQL via VirtualBox

20

Estou tentando fazer com que o servidor MySQL (que está dentro da VM) responda ao cliente (que está na máquina host). Todos os métodos retornam o mesmo:

Host '10.0.2.2' is not allowed to connect to this MySQL server

Eu assegurei o encaminhamento adequado da porta. Eu também assegurei que my.cnfeu tenho as seguintes linhas:

skip-external-locking
bind-address = 0.0.0.0

Isso não funcionou para mim. Eu também tentei jogar um pouco da seguinte maneira:

bind-address = 10.0.2.2

Mas isso também não funcionou para mim - o servidor simplesmente não pôde iniciar.

Alguma idéia, onde estou errado?

ATUALIZAR. Não verifiquei os privilégios root@%como em Como altero os privilégios para o usuário MySQL que já está criado?

RESOLVIDO.

defesa
fonte
Quais contas de usuário você criou no MySQL?
Shane Madden
Minha conta é root:root. Duvido que o problema esteja nos logins, caso contrário, a mensagem de erro indicaria algo lile Access denied for [email protected]ou algo assim.
Defance
@ShaneMadden Desculpe. Você estava certa. A coisa estava em privilégios para root@%. Bonita minha culpa.
defance 11/03

Respostas:

37

O host local da conta raiz, somente na grande maioria das instalações padrão, você tem certeza de que permitiu que ela efetue login no outro sistema? No manual de referência do MySQL :

significa que não há linha na tabela do usuário com um valor de host que corresponda ao host do cliente

Portanto, não existe %ou não está 10.0.2.2na Hostcoluna. Verifique sua configuração atual:

select user,host from mysql.user where user='root';

Você provavelmente deseja criar uma nova entrada raiz com a mesma senha que possui agora.

create user 'root'@'10.0.2.2' identified by 'yourpassword';
grant all privileges on *.* to 'root'@'10.0.2.2' with grant option;
flush privileges;
Shane Madden
fonte
11
Sim. Obrigado. Também resolvi isso há pouco, como você declarou aqui. Esse foi exatamente o meu problema.
Defance
11
A resposta de Shane está correto e pode ser executado em um único comando, útil se você estiver usando algo como um script Ansible / Vagrant para automatizar:mysql -e "create user 'root'@'10.0.2.2' identified by 'yourpassword'; grant all privileges on *.* to 'root'@'10.0.2.2' with grant option; flush privileges;"
KayakinKoder