Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie greife ich über LAN auf einen MySQL-Datenbank-Webservice zu?

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.