it-swarm.com.de

Der Host 'xxx.xx.xxx.xxx' darf keine Verbindung zu diesem MySQL-Server herstellen

Das sollte ganz einfach sein, aber ich kann bringe es dazu, für mein Leben zu arbeiten.
Ich versuche nur, eine Remoteverbindung zu meinem MySQL-Server herzustellen.

verbinden als

mysql -u root -h localhost -p  

funktioniert gut, aber versuchen

mysql -u root -h 'any ip address here' -p

schlägt mit dem Fehler fehl

ERROR 1130 (00000): Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server

In der Tabelle mysql.user gibt es für Benutzer 'root' mit Host 'localhost' genau den gleichen Eintrag wie für einen anderen mit Host '%'.

Ich bin am Ende meines Wissens und habe keine Ahnung, wie ich vorgehen soll. Irgendwelche Ideen sind willkommen.

581
concept47

Möglicherweise eine Sicherheitsvorkehrung. Sie können versuchen, ein neues Administratorkonto hinzuzufügen:

mysql> CREATE USER 'monty'@'localhost' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'localhost'
    ->     WITH GRANT OPTION;
mysql> CREATE USER 'monty'@'%' IDENTIFIED BY 'some_pass';
mysql> GRANT ALL PRIVILEGES ON *.* TO 'monty'@'%'
    ->     WITH GRANT OPTION;

Wie Pascal und andere bereits festgestellt haben, ist es keine gute Idee, einen Benutzer mit dieser Art von Zugang zu jeder IP-Adresse zu haben. Wenn Sie einen Administrator benötigen, verwenden Sie root und belassen Sie es auf localhost. Geben Sie für jede andere Aktion genau die Privilegien an, die Sie benötigen, und schränken Sie den Zugriff des Benutzers ein, wie Pascal unten empfiehlt.

Bearbeiten:

Aus den MySQL-FAQs:

Wenn Sie nicht herausfinden können, warum Sie .__ bekommen. Zugriff verweigert, vom Benutzer entfernen Tabelle alle Einträge mit Host Werte mit Platzhaltern (Einträge , die '%' oder '_' Zeichen enthalten). EIN Sehr häufiger Fehler ist das Einfügen eines neuen Eintrag mit Host = '%' und User = 'some_user' und meint, dass Damit können Sie localhost für .__ angeben. Verbindung von derselben Maschine aus. Das Grund dafür, dass dies nicht funktioniert, ist das Die Standardprivilegien enthalten eine Eintrag mit Host = 'localhost' und Benutzer = ''. Weil dieser Eintrag einen Host hat Wert 'localhost', der mehr ist spezifisch als '%', wird in .__ verwendet. Präferenz für den neuen Eintrag, wenn Verbindung von localhost! Das richtige Prozedur ist das Einfügen eines zweiten Eintrags mit Host = 'localhost' und User = 'some_user' oder zum Löschen der Eintrag mit Host = 'localhost' und Benutzer = ''. Nach dem Löschen des Eintrags Denken Sie daran, ein FLUSH PRIVILEGES auszustellen Anweisung zum erneuten Laden der Grant-Tabellen . Siehe auch Abschnitt 5.4.4, „Zugriff Steuerung, Stufe 1: Verbindung Nachprüfung".

675
Yannick Motton

Sie müssen einen new MySQL User erstellen und Berechtigungen wie folgt in Query Prompt über phpMyAdmin oder die Eingabeaufforderung vergeben:

CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost' WITH GRANT OPTION;

CREATE USER 'username'@'%' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON *.* TO 'username'@'%' WITH GRANT OPTION;

FLUSH PRIVILEGES;

Sobald alle vier Abfragen abgeschlossen sind, sollte eine Verbindung mit username / password hergestellt werden.

224
Aditya P Bhatt

Meine Fehlermeldung war ähnlich und sagte: "Host XXX darf keine Verbindung zu diesem MySQL-Server herstellen", obwohl ich root verwende. So stellen Sie sicher, dass root die richtigen Berechtigungen hat.

Mein Setup :

  • Ubuntu 14.04 LTS
  • MySQL v5.5.37

Lösung

  1. Öffnen Sie die Datei unter 'etc/mysql/my.cnf'.
  2. Prüfen Auf:

    • port (standardmäßig ist dies "port = 3306")
    • bind-address (standardmäßig ist dies 'bind-address = 127.0.0.1'; wenn Sie sich für alle öffnen möchten, kommentieren Sie diese Zeile einfach aus. Für mein Beispiel sage ich, der tatsächliche Server ist auf 10.1.1.7.)
  3. Greifen Sie jetzt auf die MySQL-Datenbank auf Ihrem tatsächlichen Server zu (sagen Sie, Ihre Remote-Adresse lautet 123.123.123.123 an Port 3306 als Benutzer 'root'. Ich möchte die Berechtigungen für die Datenbank 'dataentry' ändern.) Denken Sie daran, die IP-Adresse, den Port und den Datenbanknamen zu ändern zu Ihren Einstellungen)

    mysql -u root -p
    Enter password: <enter password>
    mysql>GRANT ALL ON *.* to [email protected]'123.123.123.123' IDENTIFIED BY 'put-your-password';
    mysql>FLUSH PRIVILEGES;
    mysql>exit
    
  4. Sudo-Dienst mysqld neu starten

  5. Sie sollten jetzt eine Remote-Verbindung zu Ihrer Datenbank herstellen können. Zum Beispiel verwende ich MySQL Workbench und gebe 'Hostname: 10.1.1.7', 'Port: 3306', 'Username: root' ein.
95
Will

Sie müssen dem Benutzer von einem beliebigen Hostnamen aus Zugriff gewähren.

So fügen Sie aus phpmyadmin neue Berechtigungen hinzu

Gehe zu Privilegien> Neuen Benutzer hinzufügen

enter image description here

Wählen Sie Any Host für den gewünschten Benutzernamen

enter image description here

66
HimalayanCoder

Führen Sie einfach die folgenden Schritte aus:

1) Verbinden Sie sich mit MySQL

mysql -uroot -p

2) Benutzer anlegen

CREATE USER 'user'@'%' IDENTIFIED BY 'password';

3) Erteilen Sie Berechtigungen

 GRANT ALL PRIVILEGES ON \*.\* TO 'user'@'%' WITH GRANT OPTION;

4) Flush Privilegien

FLUSH PRIVILEGES;
53
minhas23

Die Nachricht *Host ''xxx.xx.xxx.xxx'' is not allowed to connect to this MySQL server ist eine Antwort vom MySQL-Server an den MySQL-Client. Beachten Sie, wie die IP-Adresse und nicht der Hostname zurückgegeben wird. 

Wenn Sie versuchen, sich mit mysql -h<hostname> -u<somebody> -p zu verbinden und diese Nachricht mit der IP-Adresse zurückgibt, kann der MySQL-Server auf dem Client kein Reverse-Lookup durchführen. Dies ist kritisch, da so der MySQL-Client den Zuschüssen zugeordnet wird. 

Stellen Sie sicher, dass Sie einen nslookup <mysqlclient> vom MySQL Server ausführen können. Wenn das nicht funktioniert, gibt es keinen Eintrag im DNS-Server. Alternativ können Sie einen Eintrag in die HOSTS-Datei des MySQL-Servers einfügen (<ipaddress> <fullyqualifiedhostname> <hostname> <- Die Reihenfolge kann hier von Bedeutung sein).

Ein Eintrag in der Host-Datei meines Servers, der eine umgekehrte Suche nach dem MySQL-Client ermöglicht, hat dieses Problem gelöst. 

23

Wenn Sie die Grant-Tabellen manuell ändern (mithilfe von INSERT, UPDATE usw.), sollten Sie eine FLUSH PRIVILEGES-Anweisung ausführen. 

PS: Ich würde nicht empfehlen, any Host für any Benutzer anzumelden (insbesondere nicht die root verwenden). Wenn Sie mysql für eine Client/Server-Anwendung verwenden, ziehen Sie eine Subnetzadresse vor. Wenn Sie mysql mit einem Webserver oder Anwendungsserver verwenden, verwenden Sie bestimmte IP-Adressen.

14
Pascal Thivent

Verwenden Sie einfach die vom MySql GUI Tool (SQLyog) bereitgestellte Schnittstelle:

Klicken Sie auf Benutzermanager:  enter image description here

Wenn Sie nun Zugriff auf einen anderen entfernten PC gewähren möchten, stellen Sie sicher, dass der Host-Feldwert wie im Bild unten% ist (der Platzhalter).

 enter image description here

4
BabaNew

eine einfache Möglichkeit ist, sich mit root-Konto bei phpmyadmin anzumelden, dort zur MySQL-Datenbank zu gelangen und die Benutzertabelle auszuwählen. und dann durch SSH-Flush-Privilegien

 FLUSH PRIVILEGES;
3
user889030

Einfacher Weg: 

Grant All Privileges ON *.* to 'USER_NAME'@'%' Identified By 'YOUR_PASSWORD'; 

dann

FLUSH PRIVILEGES;

erledigt!

3
user5510975

Wenn dies eine kürzlich durchgeführte Installation von mysql ist, versuchen Sie einfach, diesen Befehl auszuführen, und versuchen Sie es erneut.

flush privileges;

Dies allein behebt das Problem für Ubuntu 16.04, mysql 5.7.20. YMMV.

2
Alex R

Die meisten Antworten hier zeigen, wie Sie Benutzer mit zwei Host-Werten erstellen: einen für localhost und einen für %.

Bitte beachten Sie, dass Sie außer einem integrierten localhost-Benutzer wie root dies nicht tun müssen. Wenn Sie einfach einen neuen Benutzer erstellen möchten, der sich von überall aus anmelden kann, können Sie verwenden

CREATE USER 'myuser'@'%' IDENTIFIED BY 'mypassword';
GRANT <whatever privileges are appropriate> ON <relevant tables> TO myuser;

und es wird gut funktionieren. (Wie bereits erwähnt, ist es eine schreckliche Idee, einem Benutzer von jeder Domäne aus Administratorrechte zu erteilen.)

2
Erica Kane

Wenn Sie zufällig unter Windows laufen; Eine einfache Lösung besteht darin, den Konfigurationsassistenten für die MySQL-Serverinstanz auszuführen. Es befindet sich in Ihrer MYSQL-Gruppe im Startmenü. Klicken Sie im zweiten Bildschirm auf das Kontrollkästchen "Root-Zugriff von Remotecomputern aus zulassen".

1
Jan

Nun, Sie können einfach die mysql.cfg -Datei öffnen und Sie müssen die Bind-Adresse in diese ändern

bind-address = 127.0.0.1

und dann starten Sie mysql neu und Sie können diesen Server mit diesem verbinden.

Sieh mal, du kannst eine Idee haben.

das ist echt sol

1
Krishna

Finden Sie einfach einen besseren Weg in Ihrem Hosting-Kontrollfeld (ich verwende hier DirectAdmin).

gehen Sie in Ihrem Control Panel einfach zur Zielserver-Datenbank, in meinem Fall: MySQL-Verwaltung -> Wählen Sie Ihre Datenbank aus -> Sie finden: "Access Hosts", fügen Sie einfach Ihren Remote-Host hier hinzu und es funktioniert jetzt!  enter image description here

Ich denke, es gibt eine ähnliche Option für andere C.panels wie plesk usw.

Ich hoffe es war auch für Sie hilfreich.

1
Eran Levi

Ich stand auch vor demselben Problem. Ich löste es in 2 Minuten für mich auf, ich habe nur eine weiße Liste von IP durch Cpanel

Angenommen, Sie versuchen, die Datenbank des Servers B von Server A ... zu verbinden. Gehen Sie zu Server B Cpanel-> Remote MySQL-> geben Sie Server A IP-Adresse ein und fertig.

0
user3437729

Problem: root @ localhost kann keine Verbindung zu einer Neuinstallation von mysql-community-server unter openSUSE 42.2-1.150.x86_64 ..__ herstellen. Mysql lehnt Verbindungen ab - Punkt.

Lösung:

$ ls -l /var/lib/mysql/mysql/user.*
-rw-rw---- 1 mysql mysql     0 Apr 29 19:44 /var/lib/mysql/mysql/user.MYD
-rw-rw---- 1 mysql mysql  1024 Apr 29 19:44 /var/lib/mysql/mysql/user.MYI
-rw-rw---- 1 mysql mysql 10684 Apr 29 19:44 /var/lib/mysql/mysql/user.frm

Datei user.MYD hat 0 Größe (wirklich?!) . Ich habe alle 3 Dateien von einem anderen Betriebssystem kopiert.

$ /usr/sbin/rcmysql stop
$ cd /var/lib/mysql/mysql/
$ scp [email protected]:/var/lib/mysql/mysql/user.* ./
$ /usr/sbin/rcmysql start
$ cd -
$ mysql -u root -p

Ich konnte mich anmelden. Dann mussten nur alle Schema-Berechtigungen erneut angewendet werden. Wenn Sie IPv6 deaktiviert haben, aktivieren Sie es temporär, damit das Konto root @ :: 1 ebenfalls funktionieren kann.

0
Alex D

CPANEL-Lösung

Gehen Sie zu Cpanel und suchen Sie nach Remote MySQL. Fügen Sie die IP in das Eingabefeld ein:

Host (% Wildcard ist erlaubt)

Kommentar, um sich zu erinnern, welche IP das ist. Das war es für mich.

0
user2060451

Dies funktioniert für DirectAdmin ;

  1. Gehen Sie zu Ihrer DirectAdmin
  2. Gehen Sie zu Ihrem MySQL Management.
  3. Wählen Sie Ihre database
  4. Unter Ihrer Registerkarte Accesse Host befindet sich ein Feld. Sie sollten dieses Feld mit xxx.xx.xxx.xx ausfüllen.
  5. Klicken Sie auf Add Host

Fertig. Nun können Sie über Ihren your_database_username & your_database_password auf diese Datenbank zugreifen.
So einfach!

Diese Antwort könnte jemandem helfen ...

All diese Antworten haben nicht geholfen. Dann wurde mir klar, dass ich vergessen habe, eine wichtige Sache zu überprüfen. Der Port :)

Ich habe MySQL in einem Docker-Container, der an einem anderen Port läuft. Ich zeigte auf meinen Host-Computer an Port 3306, auf dem ein Mysql-Server ausgeführt wird. Mein Container macht den Server auf Port 33060 verfügbar. Ich habe mir also die ganze Zeit den falschen Server angesehen! Doh!

0
Srini

Bei der Gelegenheit, dass jemand mit diesem Problem in SQLyog konfrontiert wird, ist dies der Fall:

Ich hatte eine Verbindung zur entfernten Datenbank (von SQLyog aus) und arbeitete einige Stunden lang. Danach verließ ich das System für einige Minuten und kam dann zurück, um meine Arbeit fortzusetzen - ERROR 1130 ! Nichts, was ich versucht habe, hat funktioniert. Der Neustart von SQLyog hat das Problem nicht behoben. Dann habe ich das System neu gestartet - es hat immer noch nicht funktioniert.

Also habe ich versucht, vom Terminal aus eine Verbindung herzustellen - es hat funktioniert. Dann wieder auf SQLyog versucht ... und es hat funktioniert. Ich kann es nicht anders erklären als „zufällige Computer-Eigenartigkeit“, aber ich denke, es könnte jemandem helfen.

0
Emmanuel
CREATE USER 'username'@'localhost' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;

dieser Fehler liegt daran, dass kein Passwort für den Root existiert, und dies trat möglicherweise bei Ihnen auf, als Sie versuchten, eine Verbindung von außen herzustellen.

0
Abd Abughazaleh