Jeśli jest to MySQL, sieć serwera bazy danych nie jest domyślnie włączona. Aby włączyć sieć w MySQL, musisz znaleźć aktywny plik konfiguracyjny MySQL o nazwie my.cnf
. I edytuj go.
Wyjaśnię, jak to zrobić na Ubuntu 12.04, ale instrukcje są podobne dla większości instalacji Linuksa.
Włącz sieć MySQL
Najpierw otwórz plik za pomocą edytora takiego jak nano
. Być może trzeba będzie uruchomić polecenie przez sudo
:
sudo nano /etc/mysql/my.cnf
Następnie poszukaj obszaru w pliku konfiguracyjnym z bind-address
opcja:
# 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
Teraz zmień ten bind-address
ustawienie na następujące:
bind-address = 0.0.0.0
Po zakończeniu zapisz plik i uruchom ponownie MySQL w ten sposób:
sudo service mysql restart
A teraz Twoja baza danych MySQL będzie mogła odbierać połączenia nielokalne ze zdalnych maszyn.
Upewnij się, że port MySQL jest 3306
jest otwarty
To powiedziawszy, nawet przy włączonej sieci, powinieneś nadal sprawdzać, czy możesz połączyć się ze zdalną maszyną z wiersza poleceń za pomocą narzędzia sieciowego, takiego jak nmap
. Możesz mieć zaporę sieciową na 192.168.1.10
blokowanie portu MySQL 3306
więc musisz sprawdzić, czy jest otwarty czy zamknięty w następujący sposób:
nmap 192.168.1.10 -p3306
A jeśli port 3306
jest otwarty, taka będzie odpowiedź; zwróć uwagę na open
pod 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
Ale jeśli port 3306
jest zamknięty, dostaniesz to; zwróć uwagę na closed
pod 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
Sprawdź swoje dotacje dla użytkowników MySQL
Teraz, gdy to wszystko już zrobione, twój serwer bazy danych MySQL powinien być dostępny w sieci. Ale to powiedziawszy, musisz upewnić się, że twój użytkownik bazy danych może łączyć się ze zdalnego komputera w twojej sieci LAN. Zaloguj się do MySQL i uruchom to polecenie, aby zobaczyć, jakie uprawnienia może mieć użytkownik:
SELECT user, host FROM `mysql`.`user`;
Spowoduje to wyświetlenie listy użytkowników i hostów połączonych z tymi użytkownikami w MySQL. Chodzi o to, że większość użytkowników ma uprawnienia dostępu tylko do localhost
lub 127.0.0.1
. Niektórzy otrzymują hosta wieloznacznego %
. Musisz spojrzeć na tę listę i sprawdzić, czy użytkownik, którego chcesz użyć, ma hosta z symbolami wieloznacznymi (%
) lub konkretny adres IP z nimi powiązany. Możesz sprawdzić GRANT
użytkownika s uruchamiając linię taką jak ta; oczywiście zmień [your_database_user]
i [hostname]
aby dopasować ustawienia:
SHOW GRANTS FOR '[your_database_user]'@'[hostname]';
Powinno to pokazać listę dostępnych GRANT
s dla użytkownika na określonym hoście. Jeśli mają GRANT
s, które umożliwiłyby zdalny dostęp — na przykład użycie symbolu wieloznacznego %
gospodarz — wtedy wszystko gotowe. Jeśli nie mają żadnej GRANT
s możesz uruchomić następujące polecenia MySQL; oczywiście zmień [your_database]
i [your_database_user]
aby dopasować ustawienia:
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;
Oba GRANT
wiersze stosują dość standardowy zestaw praw dostępu do bazy danych. Pierwsza linia stosuje je do dowolnego połączenia w zakresie sieci LAN 192.168.x.x
. Druga linia stosuje je do dowolnego połączenia w zakresie sieci LAN 10.x.x.x
. Lubię to robić, aby objąć wszystkie bazy w sieciach wewnętrznych. Ostatnie FLUSH PRIVILEGES;
wiersz zasadniczo mówi MySQL, aby przeładował tabele uprawnień użytkownika, które pozwalają na zastosowanie tych uprawnień.