Wie richte ich einen MySQL-Server ein, um Remoteverbindungen zu akzeptieren?

16

Ich installiere einen MySQL-Server auf dem Ubuntu-Desktop. Ich könnte MySql Query Browser bei der Angabe von Server Hostnameas damit verbinden localhost, aber wenn ich es durch die IP des Computers ersetze, funktioniert es nicht mehr (auch wenn der MySql Query Browser auf demselben Computer ausgeführt wird).

Alles, was ich bisher getan habe, ist das Entfernen der Iptables, aber es scheint nichts damit zu tun zu haben.

Hier ist die Fehlermeldung

Verbindung zum Host '192.168.0.2' konnte nicht hergestellt werden.

MySQL-Fehler-Nr. 2003

Verbindung zum MySQL-Server unter '192.168.0.2' nicht möglich (111)

Klicken Sie auf die Schaltfläche "Ping", um festzustellen, ob ein Netzwerkproblem vorliegt.

Der Ping ist aber ok

Jader Dias
quelle

Antworten:

22

Sie müssen Ihr mysqld an eine andere IP binden als 127.0.0.1.

Öffnen Sie Ihre Datei my.cnf (normalerweise /etc/mysql/my.cnf) und ändern Sie die Zeile mit der Aufschrift

bind = 127.0.0.1

zu welcher IP-Adresse auch immer Ihr Gerät verwendet, um eine Verbindung zur Außenwelt herzustellen. 0.0.0.0Bindet an alle IP-Adressen. Vergessen Sie nicht, mysqld nach dieser Änderung neu zu starten.

Halfdan
quelle
habe jetzt einen anderen Fehler: Konnte keine Verbindung zum Host '192.168.0.2' herstellen. MySQL-Fehler-Nr. 1130 Der Host 'whatever-vubuntu.local' darf keine Verbindung zu diesem MySQL-Server herstellen
Jader Dias
user @ localhost und user @ <hostname> sind unterschiedlich. Sie müssen den Benutzer hinzufügen, um eine Verbindung von Remotehosts aus herstellen zu können.
James
Das ist nicht das Problem. Ich habe das getan und bekomme immer noch den Fehler.
Cerin
Sollte das sein bind-address?
Thomas Weller
5

Zusätzlich zu halfdan answer musste ich den folgenden mysql-Befehl ausführen:

GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP
ON databasename.*
TO 'username'@'clientipaddress'
IDENTIFIED BY 'password'

Wie ich weiter gelernt habe

http://forums.mysql.com/read.php?86,23619,41248#msg-41248

Jader Dias
quelle
2

Einige weitere mögliche Probleme werden hier erklärt:

http://www.cyberciti.biz/tips/how-do-enable-remote-access-to-mysql-database-server.html http://dev.mysql.com/doc/refman/5.1/de /access-denied.html

Wenn Sie allen Datenbanken alle Berechtigungen gewähren möchten, versuchen Sie es

grant all on *.* to 'joe'@'%';

Bevor Sie dies tun, stellen Sie jedoch sicher, dass Sie einen Benutzer in der "mysql" -Datenbank haben, für den "Host" auf Ihre IP-Adresse eingestellt ist - in meinem Fall meine IP-Adresse hier zu Hause. Benutzer "joe" kann also mehr als einen Datensatz haben, einen für jede IP, von der er anruft. Um zu sehen, was du schon drin hast:

use mysql;
select Host, User, Password from user where user='joe';`

In meinem Fall stellte sich heraus, dass mein Benutzer nun die richtige IP hatte, aber auch das Passwort fehlte. Ich habe das Passwort gekürzt (es ist gehasht oder so) und dies hat mein spezielles Fernverbindungsproblem gelöst:

update user set Password='5493845039485' where user='joe';

Eine weitere Sache ist, dass Sie in my.cnf möglicherweise "port = 3306" oder den von Ihnen geplanten Port festlegen möchten.

PJ Brunet
quelle