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

Połączenie MySQL nie działa

Oto krótka lista kontrolna dotycząca włączania połączeń zdalnych dla MySQL, ale najpierw przeczytaj (6). Jeśli coś przegapiłem, możesz edytować.

1) Twój zdalny użytkownik łączy się przez konto utworzone z odpowiednim użytkownikiem, hostem wpisy (spójrz na dane wyjściowe z wybierz użytkownika, hosta z mysql.user w kolejności 1,2 ). Jeśli nie, zajrzyj do CREATE USER i/lub GRANCJA polecenia. Sprawdź dane wyjściowe z POKAŻ DOTACJE dla użytkownika.

2) Zrobiłeś uprawnienia do opróżniania; (Niektórzy twierdzą, że jest to niepotrzebne, inni twierdzą, że tak).

3a) Znajdź swój plik konfiguracyjny mysql, o którym mowa w 3b) poniżej, przeglądając informacje w Ten dokument (lub dla Windows, prawdopodobnie w dół C:\ProgramData\MySQL\MySQL Server 5.NNN ścieżka). Zależy to od dystrybucji dla Linuksa.

3b) Zmodyfikowałeś i zapisałeś my.ini (Windows) lub my.cnf (Linux) i zmieniono adres powiązania z dala od 127.0.0.1 lub localhost , na korzyść 0.0.0.0 . I stworzyłeś i usuń następującą linię:#skip-networking . Będzie wyglądać podobnie do tego:

[mysqld]
bind-address=0.0.0.0
#skip-networking

4) Zrestartuj demona mysql. Jak to się dzieje, zależy od dystrybucji.

5) Problemy z zaporą. Upewnij się, że port, domyślnie 3306 , jest otwarty na świat zewnętrzny (który w rzeczywistości może być tylko Twoim intranetem). Obejmuje to wszelkie inne warstwy zapór sieciowych, takie jak grupy zabezpieczeń AWS EC2 lub podobne, jeśli takie istnieją.

6) Zrozum, że jest z tym związane zagrożenie bezpieczeństwa. Jeśli nie masz wiedzy na temat wystawiania serwera mysql na zdalne połączenia, nie wykonuj tego.

7) Proszę przeprowadzać częste oceny bezpieczeństwa za pomocą select oświadczenie wymienione w punkcie 1. powyżej, w tym przegląd POKAŻ DOTACJE dla tych użytkowników. Nie należy niepotrzebnie przyznawać użytkownikom zbyt dużej liczby symboli wieloznacznych. Raczej nadaj użytkownikom minimalne uprawnienia do wykonywania swojej pracy.

8) Często sprawdzaj nieudane próby połączenia za pomocą dziennika ogólnego i dziennika błędów, jak krótko opisano poniżej.

W przypadku ruchu przychodzącego możesz zajrzeć do ogólnego dziennika zapytań.

select @@general_log; -- a 1 indicates it is turned on for capture
select @@general_log_file; -- the file that it logs to

Tak więc wszystkie zapytania mogą być zalogowany do Ogólnego dziennika zapytań jeśli ustawienie jest włączone. Sprawdź dziennik pod kątem „połączenia”, ale w szczególności pod kątem Odmowa dostępu dla użytkownika aby zobaczyć nieudane próby. Rób to regularnie (nie co kilka lat). Robię to przynajmniej dwa razy dziennie. Uwaga, możesz oczywiście zautomatyzować raportowanie za pomocą zewnętrznego programu. Świat zewnętrzny będzie walał Twój serwer, aby uzyskać dostęp jak na poniższym obrazku. To jest rzeczywistość; przygotuj się na to.

Sprawdź stronę podręcznika Dziennik błędów również, zwracając uwagę na poziomy ostrzeżeń i ustawienia szczegółowości w zależności od Twojej wersji.

Zalecam utworzenie kopii zapasowej według daty (o takiej nazwie) i usunięcie plików dziennika po utworzeniu kopii zapasowej, aby rozpocząć od nowa po utworzeniu kopii zapasowej. Pliki dziennika mogą szybko rosnąć do ogromnych rozmiarów, zwłaszcza dziennik ogólny. Nie zapomnij, czy masz włączone lub wyłączone ustawienie logowania.

Możesz użyć dwóch dzienników, aby określić, czy podczas próby połączenia udało się przejść przez zaporę ogniową.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak mogę włączyć logowanie wolnych zapytań MySQL na moim serwerze?

  2. Błąd podczas usuwania bazy danych (nie można rmdir '.test\', errno:17)

  3. Brak połączenia z bazą danych Mysql i mysql.sock

  4. MYSQL jak odblokować tabelę jeśli użyłem polecenia LOCK table nazwa_tabeli WRITE;

  5. pip install mysqlclient zwraca błąd krytyczny C1083:Nie można otworzyć pliku:'mysql.h':Brak takiego pliku lub katalogu