Dostęp do serwera MySQL przez VirtualBox

20

Usiłuję uzyskać serwer MySQL (który znajduje się w maszynie wirtualnej), aby odpowiedział klientowi (znajdującemu się na hoście). Wszystkie metody zwracają się tak samo:

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

Zapewniłem właściwe przekierowanie portów. Zapewniłem również, że my.cnfmam następujące linie:

skip-external-locking
bind-address = 0.0.0.0

To mi nie działało. Starałem się też grać trochę następująco:

bind-address = 10.0.2.2

Ale to też mi nie działało - serwer po prostu nie mógł się uruchomić.

Jakieś pomysły, gdzie się mylę?

AKTUALIZACJA. Nie sprawdziłem uprawnień dla root@%jak w Jak zmienić uprawnienia dla użytkownika MySQL, który został już utworzony?

ROZWIĄZANY.

defence
źródło
Jakie konta użytkowników utworzyłeś w MySQL?
Shane Madden
Mój rachunek to root:root. Wątpię, czy problem polega na logowaniu, w przeciwnym razie komunikat o błędzie wskazywałby coś lile Access denied for [email protected]lub coś.
obrona
@ShaneMadden Przepraszamy. Miałeś rację. Rzecz miała przywileje root@%. Całkiem moja wina.
defensywa

Odpowiedzi:

37

Czy host lokalny konta root jest dostępny tylko w zdecydowanej większości domyślnych instalacji, czy jesteś pewien, że zezwoliłeś mu na logowanie z innego systemu? Z podręcznika MySQL :

oznacza to, że w tabeli użytkowników nie ma wiersza z wartością Host zgodną z hostem klienta

Tak więc, nie ma to %czy 10.0.2.2w Hostkolumnie w ogóle. Sprawdź swoją bieżącą konfigurację:

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

Prawdopodobnie chcesz utworzyć nowy wpis roota z tym samym hasłem, co teraz.

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
źródło
1
Tak. Dziękuję Ci. Rozwiązałem go również przed chwilą, jak tu powiedziałeś. To był dokładnie mój problem.
obrona
1
Odpowiedź Shane'a jest poprawna i można ją uruchomić za pomocą jednego polecenia, pomocnego, jeśli używasz czegoś takiego jak skrypt Ansible / Vagrant do automatyzacji: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