Anwendungsentwickler können auf Schwierigkeiten stoßen, sich mit einer Datenbank zu verbinden, die auf einem anderen Server als dem lokalen Server gehostet wird. In diesem Artikel werden wir einen häufigen Fehler beheben, der auftritt, wenn eine Remote-Verbindung zu einer MySQL-Datenbank von außerhalb des Netzwerks oder von einem anderen Host hergestellt wird.
SQLSTATE[HY000] [1130] Host '172.19.0.11' is not allowed to connect to this MySQL server
Fehler tritt auf, wenn die Verbindungsanfrage vom MySQL-Server abgelehnt wird.
Um die Remote-Verbindungen zu aktivieren, müssen wir die folgenden Schritte ausführen –
- Remote-Verbindungen über die Konfiguration aktivieren
- Erstellen Sie einen neuen Benutzer und erlauben Sie ihm, sich von einem bestimmten Host (oder allen Hosts) mit dem Datenbankserver zu verbinden
- Berechtigungen löschen
Remote-Verbindungen von der MySQL-Konfiguration aktivieren
/etc/mysql/my.cnf
oder /etc/my.cnf
oder /etc/mysql/mysql.conf.d/mysqld.cnf
. Der Speicherort der MySQL-Konfigurationsdatei hängt von der verwendeten MySQL-Version ab. Überprüfen Sie alle diese Speicherorte, um festzustellen, ob Sie die Konfigurationsdatei finden können. Bitte treten Sie unserem Discord-Server bei und teilen Sie uns mit, wenn Sie die Konfigurationsdatei noch nicht gefunden haben. Vielleicht können wir Ihnen weiterhelfen.
Wenn Sie die Konfigurationsdatei gefunden haben, öffnen Sie sie und kommentieren Sie sie aus die Zeile bind-address = 127.0.0.1
.
Fügen Sie einfach # hinzu vor der Zeile zum Auskommentieren.
# bind-address = 127.0.0.1
Neuen MySQL-Benutzer erstellen
Melden Sie sich als root bei MySQL an –
sudo mysql
Or
mysql -u root -p
Je nach ausgewählter Methode werden Sie aufgefordert, Ihr Passwort einzugeben. sudo
ein Passwort, wenn Sie sich mit sudo
anmelden .
Erstellen Sie in der MySQL-Befehlszeile einen neuen Benutzer –
> CREATE USER 'username'@'ip-address' IDENTIFIED BY 'set-password';
Bitte ersetzen Sie „Benutzername“. ' mit dem gewünschten Benutzernamen, 'set-password ‘ mit dem starken Passwort und ‘IP-Adresse ‘ mit der Remote-IP-Adresse im obigen Befehl. Sie sollten die folgende Meldung sehen, wenn der neue Benutzer erstellt wurde –
Query OK, 0 rows affected (0.02 sec)
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'ip-address';
Bitte ersetzen Sie den Benutzernamen im vorherigen Befehl durch den tatsächlichen Benutzernamen und die IP-Adresse mit der IP-Adresse des entfernten Computers (Host). Wenn Sie fertig sind, löschen Sie bitte die Berechtigungen, damit die Änderungen wirksam werden.
> FLUSH PRIVILEGES;
Alle Remote-Verbindungen zulassen
Wie im vorherigen Befehl habe ich angewiesen, die IP-Adresse durch die IP-Adresse des Remote-Computers zu ersetzen. Es werden nur Verbindungen von diesem Remote-Computer zugelassen. Wir können jedoch auch den Platzhalter „%“ verwenden, um alle Verbindungen zuzulassen, unabhängig davon, ob sie von Ihrem Computer oder von diesem Kellermann stammen, der aus persönlichen Gründen Zugriff auf Ihre Datenbank benötigt. 😉 Sie müssen jedoch die richtigen Anmeldeinformationen eingeben, um auf die Datenbank zuzugreifen.
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'%';
Verbindungen von einem Bereich von IP-Adressen zulassen
Wenn sich die Remote-Server im selben Netzwerk befinden, können ihre IP-Adressen problemlos Remote-Verbindungen zulassen, ohne dass mehrere MySQL-Benutzer erforderlich sind.
> GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'172.19.0.*';
Beachten Sie, wie das letzte Oktett der IP-Adresse durch * ersetzt wurde im obigen Befehl. Dadurch können alle Server mit dieser IP-Adresse mit 172.19.0 beginnen.