Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak uzyskać dostęp do usługi internetowej bazy danych MySQL przez sieć LAN?

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ń.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. XmlHTTPRequest:Błąd analizowania XML:nie znaleziono elementu

  2. Grupuj kolejno wartości w MySQL i dodaj identyfikator do takich grup

  3. Wstawianie kodu html do tabeli mysql

  4. Procedura przechowywania nie zwraca wartości w MVC5

  5. Błąd Airflow mysql do gcp Dag