Mysql skonfiguruj zdalny dostęp. Konfigurowanie zdalnego połączenia z MySQL

Po zainstalowaniu Serwer MySQL, możesz się z nim połączyć tylko z tego samego komputera. Zrobiono to ze względów bezpieczeństwa systemu, ponieważ w większości przypadków w Internecie używany jest MySQL i tam, w rzadkich przypadkach, serwer WWW i serwer bazy danych są oddzielone.

W segmencie korporacyjnym bardziej poprawne jest używanie 1 serwera do wszystkich podobnych zadań. Głupotą jest trzymanie MySQL z jedną bazą danych na każdym serwerze, który może tego potrzebować. Dlatego musi istnieć jeden serwer baz danych, na którym zainstalowana jest wymagana liczba baz danych do różnych zadań.

Nawiasem mówiąc, w sieci serwer bazy danych i serwer WWW są oddzielane tylko w przypadkach, gdy moc jednego serwera nie jest wystarczająca. Wynajmujesz serwer dedykowany i hostujesz na nim bazę danych. Chciałbym wyjaśnić, że rozsądne jest robienie tego tylko w ramach jednego DC.

Zezwalaj na zdalne łączenie się z MySQL

W pliku konfiguracyjnym samego MySQL znajduje się parametr adres powiązania który jest za to odpowiedzialny, więc:

  1. otwarty plik konfiguracyjny do edycji:
    sudo nano /etc/mysql/my.cnf
  2. skomentuj linię:
    # adres-powiązania = 127.0.0.1
  3. zrestartuj MySQL:
    Sudo ponowne uruchomienie usługi mysql

Zakomentowanie tej linii jest równoznaczne z przypisaniem adresu IP 0.0.0.0 , czyli pozwól wszystkim na łączenie się. W tej linii nie można podać 2 adresów IP. Jeśli chcesz ograniczyć połączenie z serwerem MySQL, musisz skorzystać z możliwości iptables.

Teraz możesz połączyć się z serwerem bazy danych za pośrednictwem klienta Telnet, ale aby wejść do środka, potrzebujesz Konto, z którym można łączyć się nie tylko z hosta lokalnego. Aby to zrobić, musisz połączyć się z MySQL z samego serwera i utworzyć następującego użytkownika:

Mysql -u root -p

I utwórz użytkownika za pomocą polecenia:

PRZYZNAJ WSZYSTKIE UPRAWNIENIA DO *.* „new_user”@”remote_address” IDENTYFIKOWANE PRZEZ „hasło” Z OPcją PRZYZNANIA;

Ta linia tworzy użytkownika z nieograniczonymi prawami, co nie jest całkowicie poprawne. Bardziej poprawne jest maksymalne ograniczenie dostępu użytkownika łączącego się zdalnie. Zatem polecenie może wyglądać następująco:

GRANT WYBIERZ, WSTAW, USUŃ, AKTUALIZUJ, UTWÓRZ, ZMIEŃ W „nazwie_bazy_bazy”.* DO „nowego_użytkownika”@ „adresu_zdalnego” IDENTYFIKOWANEGO POPRZEZ „hasło” Z OPcją GRANT;

Za pomocą tego polecenia ograniczyliśmy uprawnienia użytkownika tylko do jednej bazy danych i działań z nią związanych.

Pełna lista wszystkich uprawnień, jakie można nadać użytkownikowi:

  • WSZYSTKIE PRZYWILEJE– wszelkie prawa do określonego przedmiotu, z wyjątkiem nadawania praw do tego przedmiotu;
  • TWORZYĆ– prawo do stworzenia tabeli;
  • ZMIENIAĆ– prawo do zmiany stołu;
  • UPUSZCZAĆ– prawo do zniszczenia stołu;
  • ZABLOKOWAĆ STOŁY– prawo do zamknięcia stołu;
  • UTWÓRZ TABELE TYMCZASOWE– prawo do tworzenia tabel tymczasowych;
  • STWÓRZ RUTYNĘ– prawo do tworzenia procedur składowanych i funkcji;
  • ZMIEŃ RUTYNĘ– prawo do zmiany lub zniszczenia przechowywanych procedur i funkcji;
  • UTWÓRZ WIDOK– prawo do utworzenia reprezentacji;
  • SPUST– prawo do tworzenia i niszczenia wyzwalaczy;
  • INDEKS– prawa do tworzenia i niszczenia indeksów;
  • WYKONAĆ– prawo do wykonywania procedur składowanych i funkcji;
  • WYDARZENIE– prawo do tworzenia wydarzeń;
  • STWÓRZ UŻYTKOWNIKA– prawa do tworzenia, niszczenia, zmiany nazwy użytkownika i usuwania wszelkich praw. Mianowany tylko na poziomie globalnym;
  • WYBIERAĆ– prawo do próbki;
  • USUWAĆ– prawo do usunięcia;
  • WSTAWIĆ– prawo do wstawienia;
  • AKTUALIZACJA– prawo do aktualizacji;
  • PLIK– prawo do korzystania z komend SELECT… INTO OUTFILE i LOAD DATA INFILE;
  • PROCES– prawo podglądu wszystkich procesów przy pomocy komendy SHOW PROCESSLIST;
  • POKAŻ BAZY DANYCH– prawo do wglądu w listę schematów;
  • POKAŻ WIDOK– prawo do przeglądania listy widoków;
  • ZAMKNIĘCIE– prawo do zamknięcia.

W przypadku usługi działającej na innym komputerze. Generalnie musimy wykonać 2 akcje:

a) Pozwól serwerowi MySQL nasłuchiwać interfejsy sieciowe(nie tylko na 127.0.0.1)

b) Utwórz uprawnienia dla użytkowników sieci.

Jeżeli pierwszy punkt jest mniej więcej jasny, wówczas punkt (b) wymaga wyjaśnienia. Faktem jest, że zwykle użytkownicy są tworzeni w stylu „nazwa użytkownika” @ „localhost”, co pozwala im przylgnąć z pewnymi uprawnieniami do niektórych baz danych, ale tylko z lokalnego hosta. Z sieci ci użytkownicy nie mogą się połączyć - MySQL informuje ich, że hasło lub nazwa użytkownika jest niepoprawna. Sztuczka polega na tym, że MySQL zawiera listę użytkowników podzieloną według komputerów, z których mogą się łączyć. Zatem użytkownik User1 może połączyć się z localhost za pomocą hasła ABCD, z adresu 192.168.0.1 można go zarejestrować za pomocą hasła BBBCCC, a od adresu 192.168.1.1 - za pomocą hasła BCDE i tylko dla niektórych baz danych. Te. możemy ustawić, z jakich komputerów użytkownik będzie mógł się łączyć, jakie będzie miał w tym przypadku hasło i do jakich baz danych będzie miał uprawnienia. Tak naprawdę, jeśli spojrzymy na bazę danych mysql, zobaczymy, że nie jest to jeden użytkownik, ale 3 różnych użytkowników: użytkownik1@localhost, [e-mail chroniony] I [e-mail chroniony]. Te. z punktu widzenia MySQL to jest różni użytkownicy odpowiednio, posiadające różne uprawnienia i hasła. Zatem, aby uzyskać dostęp z sieci, musimy utworzyć w MySQL dodatkowych użytkowników wskazujących coś innego niż localhost. Co więcej, możesz albo określić konkretne adresy IP, z których ci użytkownicy mogą się łączyć, albo specjalny charakter„%”, co oznacza „dowolne komputery inne niż localhost”. Oto przykład nazw użytkowników:

    nazwa_użytkownika@"localhost": można połączyć się tylko z hosta lokalnego

    nazwa_użytkownika@"192.168.0.1": można połączyć się tylko z adresu 192.168.0.1

    nazwa_użytkownika@"%": można połączyć się z dowolnego komputera z wyjątkiem hosta lokalnego

    nazwa_użytkownika@"192.168.0.%": można połączyć się z dowolnego komputera, którego adres IP zaczyna się od 192.168.0.

Jak widać, użytkownik musi być zawsze określony oddzielnie dla hosta lokalnego. Jeśli trzeba podać kilka adresów IP dla jednego użytkownika... trzeba będzie te adresy wpisać osobno, niestety, albo oddzielić przecinkami, ale po każdym przecinku - znowu konstrukcja typu IDENTIFIED BY. Dajmy więc serwerowi MySQL dostęp z sieci. 1) Najpierw musisz sprawdzić, czy serwer nasłuchuje żądań nie tylko na hoście lokalnym.

Dla Debiana:

Otwórz plik /etc/mysql/my.cnf i poszukaj w nim linii adresu powiązania. Musimy go odkomentować i zawierać wartość 0.0.0.0:

# kot /etc/mysql/my.cnf | grep adres powiązania

adres-wiązania = 0.0.0.0

Jeśli zmieniłeś linię, musisz zrestartować serwer MySQL:

# Uruchom ponownie /etc/init.d/mysql

DlaFreeBSD:

Domyślnie we FreeBSD serwer MySQL nasłuchuje na wszystkich dostępnych interfejsach i nic więcej nie trzeba zmieniać.

2) Teraz musisz dodać użytkowników mających dostęp z sieci. Bez tego serwer będzie nasłuchiwał sieci, ale i tak Cię nie wpuści.

# mysql-uroot–p

Hasło: // powitanie MySQL

mysql> PRZYZNAJ WSZYSTKIE UPRAWNIENIA DO *.* „użytkownik1”@”192.168.0.%” IDENTYFIKOWANY PRZEZ „hasło1”;

mysql> PRZYZNAJ WSZYSTKIE UPRAWNIENIA DO mydatabase.* DO „użytkownika2”@”%” IDENTYFIKOWANEGO PRZEZ „hasło2”;

W tym kodzie użytkownik user1 ma pełny dostęp do wszystkich baz danych na serwerze, ale tylko z komputerów z sieci 192.168.0.*

Drugi użytkownik może w ogóle zalogować się z dowolnego komputera (oczywiście z wyjątkiem localhost), ale ma pełny dostęp tylko do mojej bazy danych. Podobnie możesz dodać niezbędnych użytkowników z niezbędnymi uprawnieniami.

3) Sprawdź dostęp do sieci.

$ mysql -u nazwa użytkownika -p -h 192.168.0.100

Zamiast 192.168.0.100 - podaj adres IP maszyny z serwerem MySQL, a zamiast nazwy użytkownika - nazwę użytkownika. Jeżeli serwer Cię nie przepuści to przede wszystkim sprawdź czy na drodze do niego nie stoją jakieś firewalle i czy port MySQL: 3306 jest na tych firewallach otwarty.

Serwer MySQL ma możliwość nasłuchiwania na określonych adresach w celu akceptowania połączeń przychodzących. Po zainstalowaniu „domyślnie” każdy serwer MySQL „nasłuchuje” lokalny adres 127.0.0.1 , każdy serwer MariaDB nasłuchuje połączeń z dowolnego źródła (listens 0.0.0.0 ). Podążanie za ISPmanager Lite I Biznes wersje 5.95.0 i wyższych, dodana zostanie możliwość zmiany ustawień zdalnego dostępu dla podłączonych serwerów baz danych.

Uwaga! Ta funkcjonalność nie jest zaimplementowana w PostgreSQL

Lite

Ustawienia->Serwery baz danych. Wybierz podłączony serwer i kliknij przycisk Zmiana. Aby zmienić adres IP nasłuchiwania, włącz opcję w formularzu zdalny dostęp i wybierz adres z wyświetlonej listy:

Biznes

Aby zmienić ustawienia, przejdź Ustawienia klastra” -> Węzły klastra . Wybierz węzeł klastra z rolą serwer DBMS-a MySQL, naciśnij przycisk Zmiana. W formularzu musisz wybrać element zdalnego dostępu i wybrać adres IP.

Uwaga! W przypadku nowych instalacji w lokalnym węźle klastra dostęp zdalny jest wyłączony. Domyślnie dla wszystkich nowych węzłów klastra z tą rolą Serwer MySQL DBMS zdalny dostęp zostanie włączony i zostanie wybrany adres odsłuchu 0.0.0.0

Tworzenie użytkownika bazy danych

W związku z tym, że praca z dostępem zdalnym zostanie doprowadzona do właściwej formy, zmianom ulegnie tworzenie i edycja użytkowników bazy danych. W przypadku, gdy serwer, na którym powinien znajdować się użytkownik, jest wyłączony zdalny dostęp, pozycja o tej samej nazwie nie będzie dostępna w ustawieniach użytkownika.

Instalowanie skryptów APS

W wersji Business panelu na instalację APS czekają drobne zmiany: jeśli główna rola użytkownika znajduje się na węźle klastra innym niż jego rola MySQL, to przy próbie instalacji APS, jeśli na serwerze wyłączony jest zdalny dostęp, wyskakuje błąd pojawi się formularz.

Ten artykuł jest przeznaczony dla tych, którzy po raz pierwszy stają przed koniecznością nawiązania zdalnego połączenia z bazą danych Dane MySQL'a. W artykule opisano trudności, jakie mogą pojawić się podczas ustanawiania połączenia zdalnego oraz sposoby ich przezwyciężenia.

Jak nawiązać połączenie ze zdalną bazą?
Aby nawiązać połączenie zdalne należy określić parametry charakteryzujące nawiązywane połączenie. Ten

* --gospodarz
* --protokół
* --Port

Spośród czterech możliwych protokołów tylko protokół TCP/IP umożliwia połączenie zdalne, dlatego pierwszym wymaganiem jest to, aby komputer był dostępny z sieci za pośrednictwem protokołu TCP/IP. Następnie w linii połączenia należy dodać nazwę hosta (lub adres IP maszyny, na której znajduje się baza danych):
mysql —host=nazwa_hosta Należy pamiętać, że podanie localhost jako nazwy hosta (lub brak takiego parametru, który jest taki sam, ponieważ jest to wartość domyślna) skutkuje dostępem do komputera lokalnego.

Należy pamiętać, że parametry mają dwie formy zapisu: długą i krótką. Z kolei jeśli parametr ma wartość (np. w przypadku hosta trzeba podać nazwę hosta, z którym chcemy się połączyć), to krótką formę wpisu można zastosować z lub bez spację (wyjątkiem od tej reguły jest hasło). Zatem poniższe trzy wpisy są równoważne:

* mysql —host=myhost.ru
* mysql -h mójhost.ru
* mysql -hmyhost.ru

Jak skonfigurować połączenie ze zdalną bazą?

W MySQL użytkownika charakteryzują dwa parametry: nazwa i host, z którego może uzyskać dostęp. Domyślnie dostęp jest dozwolony tylko z komputera lokalnego, tj. dla użytkownika użytkownik@localhost. Prawa dostępu użytkownika nadawane są za pomocą Polecenia GRANT. Polecenie jest wykonywane jako root.

Na przykład, jeśli chcę utworzyć użytkownika, który będzie mógł łączyć się z dowolnego hosta za pomocą pełne prawa, następnie powinieneś uruchomić następujące polecenie:
PRZYZNAJ WSZYSTKIE UPRAWNIENIA DO `nazwa_bazy_danych`.* DO myuser@% IDENTYFIKOWANY PRZEZ „hasło”;

Notatka. zauważ to to polecenie daje dostęp użytkownikowi myuser ze wszystkich adresów IP z wyjątkiem 127.0.0.1, odpowiadającego localhost.
Użytkownikowi myuser@localhost należy nadać uprawnienia za pomocą osobnego polecenia GRANT.

Jeśli zdecydujesz się na dostęp do komputera lokalnego jako zdalnego za pomocą protokołu TCP/IP, nie zapominaj, że mójużytkownik@localhost i mójużytkownik@ip_własny_komputer to różni użytkownicy i każdemu z nich należy nadać uprawnienia osobnym poleceniem.

Drugi przykład pokazuje, jak przyznać prawo do odczytu tabeli time_zone baza danych mysql użytkownik myuser z komputera 192.168.0.76 z hasłem mypassy:
GRANT WYBIERZ NA mysql.time_zone TO [e-mail chroniony] IDENTYFIKOWANY PRZEZ „mypassy”;
Pojawiające się trudności

Jeśli po wykonaniu wszystkich kroków pojawi się błąd (Nie można się połączyć z Serwer MySQL na „twoje IP” (10061)), co oznacza, że ​​połączenie jest blokowane przez zaporę sieciową ( zapora systemu Windows, placówka, program antywirusowy lub coś innego).

Jeśli wystąpi błąd (Klient nie obsługuje żądania protokołu uwierzytelniania wysyłanego przez serwer; rozważ aktualizację klienta MySQL), klient (czyli Twój program) nie obsługuje protokołu wymaganego przez serwer.
Ten błąd można naprawić, ustawiając hasło w starym formacie:
USTAW HASŁO DLA użytkownika@hosta = OLD_PASSWORD('hasło');

Dobry zły

    W tym artykule opisano, co zrobić, jeśli zapomniałeś hasła administratora lub przypadkowo usunąłeś samego użytkownika root. W artykule skupiono się na pierwszym...

    Musiałem zorganizować dwukierunkową replikację bazy danych na dwóch serwerach mysql działających na tym samym komputerze. Wydawać by się mogło, że nie ma tu nic skomplikowanego ani specjalnego, a jednak…

Używając Zdalne połączenie do MySQL możesz połączyć się z bazą danych na serwerze hostingowym ze swojego komputer domowy korzystanie z wygodnych dla Ciebie programów bazodanowych.

Łatwe połączenie

Do ustawień łatwe połączenie do MySQL z zewnątrz, przejdź do Panelu Sterowania i przejdź do sekcji „Bazy danych MySQL”.

Kliknij przyciski „Dostęp IP” → „Dodaj IP” i określ adres IP, za pomocą którego uzyskasz dostęp do sieci. Swój adres IP możesz sprawdzić na stronie inet.from.sh.

W formularzu można także podać adresy IP za pomocą symbolu % w oktetach. Na przykład, aby ograniczyć dostęp z adresów IP jednej podsieci:

192.168.1.%

Kliknij Dodaj.

Możesz teraz połączyć się z bazą danych na serwerze hostingowym ze swojego komputera. Aby się połączyć użyj następujących ustawień:

  • serwer, z którym można się połączyć: nazwa Twojej domeny, na przykład twojadomena.ru;
  • port połączenia: 3306;
  • Nazwa użytkownika i hasło: Nazwa użytkownika i hasło ustawione podczas tworzenia bazy danych.

Mysql -P 3306 -h twojadomena.ru -u mójużytkownik_logowania -p mojabaza_danych_logowania

Bezpieczne połączenie poprzez tunel SSH

Aby zapewnić bezpieczeństwo swoim danym, wykorzystaj połączenie z bazami danych MySQL poprzez tunel SSH. Dane przesyłane są tunelem SSH w formie zaszyfrowanej, co eliminuje możliwość ich przechwycenia.

Podłączenie do bazy danych MySQL z komputera z systemem MS Windows

Zainstaluj program na swoim komputerze kit. Jest wolne oprogramowanie, możesz go pobrać na oficjalnej stronie internetowej.

Uruchom program.

Następnie kliknij przycisk „Dodaj”.

Następnie kliknij przycisk „Otwórz”. Zostanie nawiązane połączenie z hostem.

Użyj swoich danych logowania, aby zalogować się do panelu sterowania hostingu jako login i hasło.

Tunel jest zainstalowany. Aby połączyć się z bazą danych, użyj nazwy użytkownika i hasła podanych podczas tworzenia bazy danych w sekcji Bazy danych w Panelu sterowania. Jako adresu serwera użyj adresu 127.0.0.1, portu połączenia 3306.

Przykład połączenia przy pomocy programu mysql (przy połączeniu zostanie wyświetlona prośba o hasło):

Uwaga: jeśli na Twoim komputerze działa już serwer bazy danych MySQL, połącz się zdalny serwer przez port 3306 nie będzie to możliwe. W takim przypadku podczas tworzenia połączenia w PuTTY określ inny port jako „Port źródłowy”, na przykład 3307 . Użyj tego portu podczas łączenia się z bazą danych.

Łączenie się z bazą danych MySQL z komputera z systemem operacyjnym Linux

W wierszu poleceń uruchom następujące polecenie:

Ssh -L3306:localhost:3306 -n [e-mail chroniony]

  • 3306 (zaraz po klawiszu -L) - port do komputer lokalny, do którego można się połączyć z klientem mysql;
  • Twój login- nazwa Twojego konta (zaloguj się w Panelu sterowania);
  • twojadomena.ru- nazwa Twojej witryny.

Jako hasło użyj hasła, aby zalogować się do Panelu sterowania hostingu.

Tunel jest zainstalowany. Aby połączyć się z bazą danych, użyj nazwy użytkownika i hasła podanych podczas tworzenia bazy danych w sekcji Bazy danych w Panelu sterowania. Jako adresu serwera użyj adresu 127.0.0.1, portu połączenia 3306.

Przykład połączenia przy pomocy programu mysql (przy połączeniu zostanie wyświetlona prośba o hasło):

Mysql -P 3306 -h 127.0.0.1 -u mój użytkownik_logowania -p moja baza danych_logowania

Uwaga: Jeśli na Twoim komputerze działa już serwer bazy danych MySQL, połączenie ze zdalnym serwerem na porcie 3306 nie będzie możliwe. W takim przypadku uruchamiając ssh, zaraz po przełączniku -L, określ alternatywny port, na przykład 3307. Użyj tego portu podczas łączenia się z bazą danych.

Sprawdzanie połączenia z bazą danych MySQL

Za pomocą narzędzia możesz sprawdzić połączenie z bazą danych telnetu. Zaloguj się do interfejsu wiersz poleceń(w systemie operacyjnym MS Windows: Start → Uruchom→ cmd.exe), wpisz polecenie:

Telnet 127.0.0.1 3306

Jeżeli połączenie zostanie nawiązane, procedurę konfiguracji tunelu można uznać za zakończoną. W przeciwnym razie musisz dokładnie sprawdzić ustawienia, upewnić się, że nie ma problemów z siecią i skontaktować się z pomocą techniczną.