Das sollte ganz einfach sein, aber ich kann es nicht dazu bringen, für mein Leben zu arbeiten.
Ich versuche nur, eine Remoteverbindung mit 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 mysql.user
Tabelle gibt es genau den gleichen Eintrag für den Benutzer 'root' mit dem Host 'localhost' wie für einen anderen mit dem Host '%'.
Ich bin am Ende meines Verstandes und habe keine Ahnung, wie ich vorgehen soll. Ideen sind willkommen.
mysql
mysql-error-1130
concept47
quelle
quelle
Antworten:
Möglicherweise eine Sicherheitsmaßnahme. Sie können versuchen, ein neues Administratorkonto hinzuzufügen:
Obwohl, wie Pascal und andere angemerkt haben, es keine gute Idee ist, einen Benutzer mit dieser Art von Zugriff für jede IP offen zu haben. Wenn Sie einen Administrator benötigen, verwenden Sie root und belassen Sie ihn auf localhost. Geben Sie für jede andere Aktion genau die Berechtigungen an, die Sie benötigen, und beschränken Sie die Zugänglichkeit des Benutzers, wie von Pascal unten vorgeschlagen.
Bearbeiten:
Aus den MySQL-FAQ:
quelle
Über phpMyAdmin oder die Eingabeaufforderung müssen Sie eine erstellen
new MySQL User
und Berechtigungen wieQuery prompt
folgt zuweisen :Sobald alle vier Abfragen abgeschlossen sind, sollte eine Verbindung hergestellt werden
username / password
quelle
@localhost
würde Sinn machen, wenn die Berechtigungen irgendwie unterschiedlich wären, aber hier sind sie gleich und es wird wahrscheinlich verwirrender als alles andere (z. B. das Ändern von Passwörtern bei einem, ohne zu bemerken, dass das andere existiert, und dass Ihr Login möglicherweise dieses trifft ).Meine Fehlermeldung war ähnlich und lautete " Host XXX darf keine Verbindung zu diesem MySQL-Server herstellen ", obwohl ich root verwendet habe. So stellen Sie sicher, dass root über die richtigen Berechtigungen verfügt.
Mein Setup :
Lösung
Prüfen Auf:
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' und 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)
sudo service mysqld neu starten
quelle
use dataentry
Zeile überspringen (da die meisten Benutzer diese Datenbank nicht erstellen lassen).mysql
Dienst am Ende neu zu startenFLUSH PRIVILEGES
sollte es Ihnen ermöglichen, nicht neu starten zu müssen.Sie müssen dem Benutzer von jedem Hostnamen aus Zugriff gewähren.
So fügen Sie neue Berechtigungen von phpmyadmin hinzu
Gehe zu Berechtigungen> Neuen Benutzer hinzufügen
Wählen Sie einen beliebigen Host für den gewünschten Benutzernamen
quelle
Führen Sie einfach die folgenden Schritte aus:
1a) Stellen Sie eine Verbindung zu MySQL her (über localhost).
1b) Wenn der myslq-Server in Kubernetes (K8s) ausgeführt wird und über einen NodePort zugegriffen wird
2) Benutzer erstellen
3) Berechtigungen erteilen
4) Privilegien spülen
quelle
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, eine Verbindung herzustellen,
mysql -h<hostname> -u<somebody> -p
und diese Nachricht mit der IP-Adresse zurückgegeben wird, kann der MySQL-Server keine umgekehrte Suche auf dem Client durchführen. Dies ist wichtig, da auf diese Weise der MySQL-Client den Zuschüssen zugeordnet wird.Stellen Sie sicher, dass Sie einen
nslookup <mysqlclient>
FROM 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 hier kann von Bedeutung sein).Ein Eintrag in der Hostdatei meines Servers, der eine umgekehrte Suche des MySQL-Clients ermöglicht, hat genau dieses Problem gelöst.
quelle
Einfacher Weg:
dann
erledigt!
quelle
WHERE CustomerName LIKE 'a%'
- Findet alle Werte, die mit "a" beginnenWenn Sie die Grant-Tabellen manuell ändern (mit INSERT, UPDATE usw.), sollten Sie eine
FLUSH PRIVILEGES
Anweisung ausführen , um den Server anzuweisen, die Grant-Tabellen neu zu laden.PS: Ich würde nicht empfehlen, einem Host die Verbindung für einen Benutzer zu erlauben (insbesondere nicht die
root
Verwendung). Wenn Sie MySQL für eine Client / Server-Anwendung verwenden, bevorzugen Sie eine Subnetzadresse. Wenn Sie MySQL mit einem Webserver oder Anwendungsserver verwenden, verwenden Sie bestimmte IP-Adressen.quelle
Verwenden Sie einfach die vom GUI-Tool (SQLyog) von MySql bereitgestellte Schnittstelle:
Klicken Sie auf Benutzermanager:
Wenn Sie nun für einen anderen Remote-PC Zugriff gewähren möchten, stellen Sie einfach sicher, dass der Host-Feldwert wie im folgenden Bild% ist (dies ist der Platzhalter).
quelle
Die meisten Antworten hier zeigen, wie Sie Benutzer mit zwei Hostwerten erstellen: einem für
localhost
und einem für%
.Bitte beachten Sie, dass Sie dies mit Ausnahme eines integrierten localhost-Benutzers wie root nicht tun müssen. Wenn Sie einfach einen neuen Benutzer erstellen möchten, der sich von überall aus anmelden kann, können Sie verwenden
und es wird gut funktionieren. (Wie andere bereits erwähnt haben, ist es eine schreckliche Idee, einem Benutzer aus einer beliebigen Domäne Administratorrechte zu gewähren.)
quelle
Ein einfacher Weg ist, sich bei phpmyadmin mit dem Root-Konto anzumelden, dort zur MySQL-Datenbank zu gelangen und die Benutzertabelle auszuwählen, dort das Root-Konto zu bearbeiten und im Host-Feld% Joker hinzuzufügen. und dann durch ssh flush Privilegien
quelle
Wenn es sich um eine kürzlich durchgeführte MySQL-Installation handelt, versuchen Sie einfach, diesen Befehl auszuführen, bevor Sie etwas anderes ändern, und versuchen Sie es dann erneut:
Dies allein behebt das Problem für mich unter Ubuntu 16.04, MySQL 5.7.20. YMMV.
quelle
Finden Sie einfach einen besseren Weg, dies in Ihrem Hosting-Control-Panel zu tun (ich verwende DirectAdmin hier).
Gehen Sie einfach zur Zielserver-Datenbank in Ihrem Control Panel, 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!
Ich denke, es gibt eine ähnliche Option für andere C.panels wie plesk usw.
Ich hoffe es war auch für dich hilfreich.
quelle
Nun, nichts von der obigen Antwort hat bei mir funktioniert. Nach vielen Recherchen habe ich eine Lösung gefunden. Obwohl ich zu spät komme, kann dies anderen in Zukunft helfen.
Melden Sie sich von einem Terminal aus bei Ihrem SQL Server an
Dies sollte das Berechtigungsproblem lösen.
Viel Spaß beim Codieren !!
quelle
Nun, was Sie tun können, ist einfach die Datei mysql.cfg zu öffnen und Sie müssen die Bindungsadresse in diese ändern
Bindungsadresse = 127.0.0.1
und dann MySQL neu starten und Sie können diesen Server mit diesem verbinden.
Schauen Sie, Sie können eine Idee davon haben.
das ist echtes sol
quelle
Wenn Sie zufällig unter Windows ausgeführt werden; Eine einfache Lösung besteht darin, den Konfigurationsassistenten für MySQL-Serverinstanzen auszuführen. Es befindet sich in Ihrer MYSQL-Gruppe im Startmenü. Klicken Sie im vorletzten Bildschirm auf das Feld "Root-Zugriff von Remotecomputern zulassen".
quelle
Wenn Sie WAMP Server + Windows 10 haben und es für die Entwicklung verwenden, klicken Sie mit der rechten Maustaste auf das Wamp-Symbol =>
Wamp Settings
=>Check Allow Virtual Hosts other than 127*
quelle
Ich stand auch vor dem gleichen Problem. Ich habe es in 2 Minuten für mich gelöst. Ich habe gerade eine IP-Liste über cpanel erstellt
Angenommen, Sie versuchen, die Datenbank von Server B von Server A zu verbinden. Gehen Sie zu Server B Cpanel-> Remote MySQL-> Geben Sie die IP-Adresse von Server A ein und fertig.
quelle
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 ausgeführt, der auf einem anderen Port ausgeführt wird. Ich habe auf meinen Host-Computer an Port 3306 gezeigt, auf dem ein MySQL-Server ausgeführt wird. Mein Container macht den Server auf Port 33060 verfügbar. Die ganze Zeit habe ich nach dem falschen Server gesucht! doh!
quelle
Dieser Fehler liegt daran, dass kein Kennwort für das Stammverzeichnis vorhanden ist. Dies ist möglicherweise bei Ihnen aufgetreten, als Sie versucht haben, eine Verbindung von außen herzustellen.
quelle
CPANEL-Lösung
Gehen Sie zu Cpanel und suchen Sie nach Remote MySQL. Fügen Sie die IP in das Eingabefeld ein:
Host (% Platzhalter ist erlaubt)
Kommentar, um sich zu merken, welche IP das ist. Das war es für mich.
quelle
Dies funktioniert für jede zukünftige Remote-MySQL-Verbindung!
Navigieren Sie zu der Zeile, die mit der Direktive für die Bindungsadresse beginnt. Es sollte so aussehen:
Melden Sie sich bei Ihrem MySQL als Root-Terminal an
Gewähren Sie diesem Computer die ausschließliche Berechtigung, mit dem folgenden Befehl eine Remoteverbindung zur Datenbank herzustellen.
quelle
Bei der Möglichkeit, dass jemand, der mit diesem Problem konfrontiert ist, es in SQLyog auftritt, ist Folgendes passiert:
Ich hatte mich mit der entfernten Datenbank (aus SQLyog heraus) verbunden und einige Stunden gearbeitet. Danach verließ ich das System für einige Minuten und kam dann zurück, um meine Arbeit fortzusetzen - FEHLER 1130 ! Nichts, was ich versuchte, funktionierte; Ein 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, eine Verbindung vom Terminal aus herzustellen - es hat funktioniert. Dann versuchte es erneut auf SQLyog ... und es funktionierte. Ich kann es nicht anders erklären als "zufällige Computer-Skurrilität", aber ich denke, es könnte jemandem helfen.
quelle
Wenn Sie versuchen, eine MySQL-Abfrage auszuführen, ohne die Verbindungszeichenfolge zu definieren, wird dieser Fehler angezeigt.
Wahrscheinlich haben Sie vergessen, die Verbindungszeichenfolge vor der Ausführung zu definieren. Hast du das überprüft? (entschuldige mein schlechtes Englisch)
quelle
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 - Zeitraum.
Lösung:
Datei user.MYD hat die Größe 0 (wirklich ?!). Ich habe alle 3 Dateien von einem anderen funktionierenden System kopiert.
Ich konnte mich anmelden. Dann ging es nur noch darum, alle Schema-Berechtigungen erneut anzuwenden. Wenn Sie IPv6 deaktiviert haben, aktivieren Sie es vorübergehend erneut, damit auch das root @ :: 1-Konto funktioniert.
quelle
Dies funktioniert für DirectAdmin ;
DirectAdmin
.MySQL Management
.database
.Accesse Host
Registerkarte befindet sich ein Feld. Sie sollten dieses Feld mit ausfüllenxxx.xx.xxx.xx
.Add Host
.Fertig. Jetzt können Sie mit Ihrem
your_database_username
& auf diese Datenbank zugreifenyour_database_password
.So einfach!
quelle
Alle Antworten hier haben in meinem Fall nicht funktioniert, daher bin ich Gast, dies könnte anderen Benutzern in Zukunft helfen. Dies kann auch ein Problem in unserem Code sein, nicht nur in MySQL allein.
Wenn Sie verwenden
VB.NET
Anstelle dieses Codes:
Sie müssen in
MysqlConn = New MySqlConnection()
die erste Zeile wechseln . So wäre es alsoquelle