GNU/Linux >> LINUX-Kenntnisse >  >> Linux

[Behoben] Host darf sich nicht mit diesem MySQL-Server verbinden

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. Standardmäßig akzeptiert der MySQL-Server nur Verbindungen von lokalen Hosts und nicht von anderen Hosts.

Um die Remote-Verbindungen zu aktivieren, müssen wir die folgenden Schritte ausführen –

  1. Remote-Verbindungen über die Konfiguration aktivieren
  2. Erstellen Sie einen neuen Benutzer und erlauben Sie ihm, sich von einem bestimmten Host (oder allen Hosts) mit dem Datenbankserver zu verbinden
  3. Berechtigungen löschen

Remote-Verbindungen von der MySQL-Konfiguration aktivieren

Öffnen Sie die MySQL-Konfiguration mit Ihrem bevorzugten Texteditor, z. B. Nano. Die MySQL-Datei befindet sich normalerweise unter /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

Wir erstellen einen mysql-Benutzer mit dem Host als „localhost“ für die lokale Verwendung, aber wenn wir einen Benutzer für Remote-Verbindungen hinzufügen, müssen wir localhost durch die IP-Adresse ersetzen des entfernten Computers.

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. Wenn Sie die zweite Methode verwenden, geben Sie das Passwort des MySQL-Root-Benutzers oder den 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)

Wir werden dem neu erstellten Benutzer nun Berechtigungen erteilen, um eine bestimmte Datenbank auf dem Server zu verwalten. Wir können diesem Benutzer auch Zugriff auf alle Datenbanken auf dem Server gewähren, aber dies wird nicht empfohlen. Ich empfehle, dass Sie eine neue Datenbank(en) für Ihre Anwendung(en) erstellen und diesem Benutzer Berechtigungen zum Verwalten der Datenbank(en) erteilen.

> 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'@'%';

Wenn sich Ihr Datenbankserver in der Produktion befindet, wird dringend empfohlen, „%“ nicht zu verwenden. Platzhalter.

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.


Linux
  1. Hosten Sie WordPress in Ubuntu 20.04, Mysql 8, Ubuntu 20.04, Nginx

  2. Kann keine Verbindung zur Datenbank herstellen; Benutzer existiert in Datenbank, aber nicht auf Serverebene

  3. Verbinden Sie sich mit einem Cloud-Server

  4. Verbinden Sie sich remote mit einer MySQL-Datenbank

  5. So funktioniert ein Linux-Server

RHEL7 FTP-Serverfehler:ftp:connect:No route to host solution

So hosten Sie eine Website auf dem NGINX-Webserver

So verwenden Sie SSH, um eine Verbindung zu einem Remote-Server herzustellen

MySQL-Datenbankserver

Der FTP-Client stellt keine Verbindung zum Microsoft FTP-Server her

Wie man mit PHP eine Verbindung zu MySQL herstellt