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.


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 root@10.0.2.2ou 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;

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
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.