Wenn dies MySQL ist, ist die Vernetzung des Datenbankservers standardmäßig nicht aktiviert. Um das Netzwerk in MySQL zu aktivieren, müssen Sie die aktive MySQL-Konfigurationsdatei mit dem Namen my.cnf
finden . Und bearbeiten Sie es.
Ich werde erklären, wie das unter Ubuntu 12.04 geht, aber die Anweisungen sind für die meisten Linux-Installationen ähnlich.
MySQL-Netzwerk aktivieren
Öffnen Sie zunächst die Datei mit einem Editor wie nano
. Möglicherweise müssen Sie den Befehl über sudo
ausführen :
sudo nano /etc/mysql/my.cnf
Suchen Sie dann in Ihrer Konfigurationsdatei nach dem Bereich mit der bind-address
Möglichkeit:
# Instead of skip-networking the default is now to listen only on
# localhost which is more compatible and is not less secure.
bind-address = 127.0.0.1
Ändern Sie nun diese bind-address
wie folgt einstellen:
bind-address = 0.0.0.0
Speichern Sie danach die Datei und starten Sie MySQL wie folgt neu:
sudo service mysql restart
Und jetzt kann Ihre MySQL-Datenbank nicht-localhost-Verbindungen von entfernten Rechnern annehmen.
Stellen Sie sicher, dass der MySQL-Port 3306
ist ist geöffnet
Allerdings sollten Sie auch bei aktiviertem Netzwerk prüfen, ob Sie mit einem Netzwerktool wie nmap
über die Befehlszeile eine Verbindung zum Remote-Computer herstellen können . Möglicherweise haben Sie eine Firewall auf 192.168.1.10
blockiert den MySQL-Port 3306
Sie müssen also überprüfen, ob es geöffnet oder geschlossen ist, wie folgt:
nmap 192.168.1.10 -p3306
Und wenn Port 3306
offen ist, wird dies die Antwort sein; Beachten Sie das open
unter STATE
:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp open mysql
Aber wenn Port 3306
geschlossen ist, erhalten Sie dies; beachte den closed
unter STATE
:
Starting Nmap 6.40 ( http://nmap.org ) at 2014-06-10 10:34 EDT
Nmap scan report for 192.168.1.10
Host is up (0.0035s latency).
PORT STATE SERVICE
3306/tcp closed mysql
Überprüfen Sie Ihre MySQL-Benutzerberechtigungen
Wenn das alles erledigt ist, sollte Ihr MySQL-Datenbankserver im Netzwerk zugänglich sein. Allerdings müssen Sie sicherstellen, dass der von Ihnen verwendete Datenbankbenutzer berechtigt ist, eine Verbindung von einem Remote-Computer in Ihrem LAN herzustellen. Melden Sie sich also bei MySQL an und führen Sie diesen Befehl aus, um zu sehen, welche Berechtigungen der Benutzer möglicherweise hat:
SELECT user, host FROM `mysql`.`user`;
Dies zeigt Ihnen eine Liste von Benutzern und Hosts, die mit diesen Benutzern in MySQL verbunden sind. Die Sache ist, dass den meisten Benutzern nur Zugriffsrechte auf localhost
gewährt werden oder 127.0.0.1
. Einigen wird der Wildcard-Host %
gewährt . Sie müssen sich diese Liste ansehen und sehen, ob der Benutzer, den Sie verwenden möchten, einen Wildcard-Host hat (%
) oder eine bestimmte damit verbundene IP-Adresse. Sie können den GRANT
eines Benutzers überprüfen s durch Ausführen einer Zeile wie dieser; ändern Sie natürlich [your_database_user]
und [hostname]
Ihren Einstellungen entsprechen:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
Das sollte Ihnen eine Liste der verfügbaren GRANT
zeigen s für einen Benutzer auf einem bestimmten Host. Wenn sie GRANT
haben s, die den Fernzugriff ermöglichen würden – wie die Verwendung von Platzhaltern %
Host – dann sind Sie fertig. Wenn sie kein GRANT
haben s Sie können die folgenden MySQL-Befehle ausführen; ändern Sie natürlich [your_database]
und [your_database_user]
Ihren Einstellungen entsprechen:
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'192.168.0.0/255.255.0.0';
GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, EVENT, TRIGGER ON `[your_database]`.* TO '[your_database_user]'@'10.0.0.0/255.0.0.0';
FLUSH PRIVILEGES;
Beide GRANT
Zeilen wenden einen ziemlich standardmäßigen Satz von Zugriffsrechten auf eine Datenbank an. Die erste Zeile wendet sie auf jede Verbindung im LAN-Netzwerkbereich von 192.168.x.x
an . Die zweite Zeile wendet sie auf jede Verbindung im LAN-Netzwerkbereich von 10.x.x.x
an . Ich mache das gerne, um alle Basen auf internen Netzwerken abzudecken. Die letzten FLUSH PRIVILEGES;
line weist MySQL grundsätzlich an, die Benutzerprivilegientabellen neu zu laden, damit diese Berechtigungen wirksam werden.