Frage Zugriff auf MySQL Server über VirtualBox


Ich versuche, MySQL-Server (der in VM ist) auf Client (der auf dem Host-Computer ist) zu reagieren. Alle Methoden geben dasselbe zurück:

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

Ich habe die korrekte Port-Weiterleitung sichergestellt. Ich habe auch sichergestellt, dass in my.cnf Ich habe folgende Zeilen:

skip-external-locking
bind-address = 0.0.0.0

Das hat mir nicht geholfen. Ich habe auch versucht, ein bisschen wie folgt zu spielen:

bind-address = 10.0.2.2

Aber das ging mir auch nicht - der Server konnte einfach nicht starten.

Irgendwelche Ideen, wo ich falsch liege?

AKTUALISIEREN. Ich habe die Privilegien nicht überprüft root@% wie in Wie ändere ich die Rechte für MySQL-Benutzer, die bereits erstellt wurden?

Gelöst.


19
2018-03-11 16:19


Ursprung


Welche Benutzerkonten haben Sie in MySQL erstellt? - Shane Madden♦
Mein Konto ist root:root. Ich bezweifle, dass dieses Problem in Logins ist, sonst würde Fehlermeldung etwas lile sagen Access denied for root@10.0.2.2 oder so. - defance
@ShaneMadden Entschuldigung. Du hattest recht. Die Sache war in Privilegien für root@%. Ziemlich meine Schuld. - defance


Antworten:


Der localhost des root-Accounts - nur in der überwiegenden Mehrheit der Standardinstallationen, sind Sie sicher, dass Sie sich von dem anderen System aus anmelden konnten? Von dem MySQL Referenzhandbuch:

Das bedeutet, dass in der Benutzertabelle keine Zeile mit einem Host-Wert vorhanden ist, der mit dem Client-Host übereinstimmt

Also, nein % oder 10.0.2.2 in dem Host Spalte überhaupt. Überprüfen Sie Ihre aktuelle Konfiguration:

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

Wahrscheinlich möchten Sie einen neuen Root-Eintrag mit dem gleichen Passwort wie jetzt erstellen.

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;

35
2018-03-11 16:31



Ja. Vielen Dank. Ich habe es gerade eben gelöst, wie Sie hier sagten. Das war genau mein Problem. - defance
Shanes Antwort ist korrekt und kann in einem einzigen Befehl ausgeführt werden, hilfreich, wenn Sie etwas wie ein Ansible-Skript / Vagrant zum Automatisieren verwenden: 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