Conexiune de la distanță la mysql. Permite conectarea la MySQL de la distanță. Conectarea la o bază de date MySQL de pe un computer care rulează MS Windows

Serverul MySQL are capacitatea de a asculta adrese specifice pentru a accepta conexiuni de intrare. Când este instalat „în mod implicit”, fiecare server MySQL „ascultă” adresa locala 127.0.0.1 , fiecare server MariaDB ascultă conexiunile din orice sursă (ascultă 0.0.0.0 ). Urmând în ISPmanager LiteȘi Afaceri versiuni 5.95.0 și mai sus, va fi adăugată posibilitatea de a modifica setările de acces la distanță pentru serverele de baze de date conectate.

Atenţie! Această funcționalitate nu este implementată pentru PostgreSQL

Lite

Setări->Servere de baze de date. Selectați serverul conectat și faceți clic pe butonul Schimbare. Pentru a schimba adresa IP de ascultare, activați din formular acces de la distanțăși selectați adresa din lista care apare:

Afaceri

Pentru a schimba setările mergi Setări cluster" -> Noduri de cluster . Selectați un nod de cluster cu un rol Server MySQL DBMS , apasa butonul Schimbare. În formular, va trebui să selectați elementul de acces la distanță și să selectați o adresă IP.

Atenţie! Pentru noile instalări pe un nod de cluster local, accesul la distanță este dezactivat. Implicit pentru toate nodurile de cluster noi cu rol Server MySQL DBMS accesul de la distanță va fi activat și adresa de ascultare va fi selectată 0.0.0.0

Crearea unui utilizator de bază de date

Datorită faptului că lucrul cu acces de la distanță va fi adus în formă adecvată, crearea și editarea utilizatorilor bazei de date va suferi modificări. În cazul în care serverul pe care ar trebui să fie localizat utilizatorul este dezactivat acces de la distanță, elementul cu același nume nu va fi disponibil în setările utilizatorului.

Instalarea scripturilor APS

În versiunea Business a panoului, modificări minore așteaptă instalarea APS: dacă rolul principal al utilizatorului este pe un nod de cluster diferit de rolul său MySQL, atunci când încearcă să instaleze APS, dacă accesul la distanță este dezactivat pe server, o eroare a formularului va apărea.

După ce ați instalat serverul MySQL, vă puteți conecta la acesta doar de pe aceeași mașină. Acest lucru a fost făcut din motive de securitate a sistemului, deoarece în cele mai multe cazuri MySQL este folosit pe Web și acolo, în cazuri rare, serverul web și serverul de baze de date sunt separate.

În segmentul corporativ, este mai corect să folosiți 1 server pentru toate sarcinile similare. Este o prostie să păstrezi MySQL cu o singură bază de date pe fiecare server care ar putea avea nevoie de ea. Prin urmare, trebuie să existe un server de bază de date pe care cantitatea necesară baze de date pentru diferite sarcini.

Apropo, pe Web, un server de baze de date și un server web sunt separate doar în cazurile în care puterea unui server nu este suficientă. Închiriezi un server dedicat și găzduiești baza de date pe acesta. Aș dori să clarific că este rezonabil să faceți acest lucru doar într-un singur DC.

Permite conectarea la MySQL de la distanță

În fișierul de configurare al MySQL în sine există un parametru bind-adresă care este responsabil pentru aceasta, deci:

  1. deschis Fișier de configurare pentru editare:
    sudo nano /etc/mysql/my.cnf
  2. comentează rândul:
    # bind-address = 127.0.0.1
  3. reporniți MySQL:
    sudo service mysql restart

Comentarea acestei linii este echivalentă cu alocarea unei adrese IP 0.0.0.0 , adică permiteți tuturor să se conecteze. Nu puteți specifica 2 adrese IP în această linie. Dacă trebuie să limitați conexiunea la serverul MySQL, trebuie să utilizați capabilitățile iptables.

Acum vă puteți conecta la serverul bazei de date printr-un client telnet, dar pentru a intra în interior aveți nevoie Cont, care are voie să se conecteze nu numai de la localhost. Pentru a face acest lucru, trebuie să vă conectați la MySQL de pe server și să creați următorul utilizator:

Mysql -u root -p

Și creați un utilizator cu comanda:

ACORDAȚI TOATE PRIVILEGIILE PE *.* CĂTRE „new_user”@”remote_address” IDENTIFICAT PRIN „parolă” CU OPȚIUNEA DE ARGENTARE;

Această linie creează un utilizator cu drepturi nelimitate, ceea ce nu este în întregime corect. Este mai corect să limitezi cât mai mult accesul utilizatorului care se conectează de la distanță. Deci comanda ar putea arăta astfel:

GRANT SELECT, INSERT, DELETE, UPDATE, CREATE, ALTER ON „database_name”.* LA „new_user”@”remote_address” IDENTIFICAT DE „parolă” CU OPȚIUNEA GRANT;

Cu această comandă, am limitat permisiunile utilizatorului la o singură bază de date și acțiuni cu aceasta.

O listă completă a tuturor drepturilor care pot fi specificate pentru un utilizator:

  • TOATE PRIVILEGIILE- toate drepturile la obiect specificat cu excepția cesionării drepturilor asupra acestui obiect;
  • CREA– dreptul de a crea un tabel;
  • MODIFICA– dreptul de a schimba masa;
  • CĂDERE BRUSCA– dreptul de a distruge masa;
  • BLOCARE MABELE– dreptul de a bloca masa;
  • CREAȚI TABELE TEMPORARE– dreptul de a crea tabele temporare;
  • CREAȚI RUTINĂ– dreptul de a crea proceduri și funcții stocate;
  • ALTER RUTINE– dreptul de a modifica sau distruge procedurile și funcțiile stocate;
  • CREATE VIEW– dreptul de a crea o reprezentare;
  • TRIGGER– dreptul de a crea și distruge declanșatoare;
  • INDEX– drepturi de a crea și distruge indexuri;
  • A EXECUTA– dreptul de a executa proceduri și funcții stocate;
  • EVENIMENT– dreptul de a crea evenimente;
  • CREAZA UTILIZATOR– drepturi de a crea, distruge, redenumi un utilizator și elimina toate drepturile. Numit doar pentru nivel global;
  • SELECTAȚI– dreptul la probă;
  • ȘTERGE– dreptul la ștergere;
  • INTRODUCE– dreptul de inserare;
  • ACTUALIZAȚI– dreptul de actualizare;
  • FIŞIER– dreptul de a utiliza comenzile SELECT ... INTO OUTFILE și LOAD DATA INFILE;
  • PROCES– dreptul de a vizualiza toate procesele folosind comanda SHOW PROCESSLIST;
  • AFIȚI BAZELE DE DATE– dreptul de a vizualiza lista de scheme;
  • AFIȘAȚI VEDERE– dreptul de a vizualiza lista de vizualizări;
  • ÎNCHIDE– dreptul la închidere.

Cu o conexiune MySQL la distanță, vă puteți conecta la baza de date de pe serverul dvs. de găzduire de la dvs computer de acasă, folosind programe de baze de date care sunt convenabile pentru dvs.

Conexiune ușoară

Pentru setari conexiune ușoară la MySQL din exterior, accesați Panoul de control și accesați secțiunea „Băzuri de date”. Date MySQL».

Faceți clic pe butoanele „Acces prin IP” → „Adăugați IP” și specificați adresa IP cu care accesați rețeaua. Puteți afla adresa dumneavoastră IP pe site-ul inet.from.sh.

În formular, puteți specifica și adrese IP cu simbolul % în octeți. De exemplu, pentru a restricționa accesul de la adresele IP ale unei subrețele:

192.168.1.%

Faceți clic pe Adăugați.

Acum vă puteți conecta la baza de date de pe serverul dvs. de găzduire de pe computer. Pentru a conecta utilizați următoarele setări:

  • server la care să vă conectați: numele dvs. de domeniu, de exemplu domeniul dvs.;
  • port de conectare: 3306;
  • Nume de utilizator și parolă: numele de utilizator și parola pe care le-ați setat la crearea bazei de date.

Mysql -P 3306 -h yourdomain.ru -u mylogin_user -p mylogin_db

Conexiune sigură prin tunel SSH

Pentru a asigura securitatea datelor dvs., utilizați o conexiune la bazele de date MySQL printr-un tunel SSH. Datele sunt transmise prin tunelul SSH în formă criptată, ceea ce elimină posibilitatea de interceptare.

Conectarea la o bază de date MySQL de pe un computer care rulează MS Windows

Instalați programul pe computer chit. Este gratis software, îl puteți descărca de pe site-ul oficial.

Lansa programul.

După aceea, faceți clic pe butonul „Adăugați”.

După aceea, faceți clic pe butonul „Deschidere”. Se va stabili o conexiune cu gazda dvs.

Utilizați informațiile de conectare pentru a vă conecta la panoul de control al găzduirii ca login și parolă.

Tunelul este instalat. Pentru a vă conecta la baza de date, utilizați numele de utilizator și parola pe care le-ați specificat la crearea bazei de date în secțiunea Baze de date din Panoul de control. Utilizați 127.0.0.1 ca adresă de server, portul de conexiune 3306.

Un exemplu de conectare folosind programul mysql (o parolă va fi solicitată la conectare):

Atenţie: dacă computerul dvs. rulează deja un server de baze de date MySQL, conectați-vă server la distanta prin portul 3306 nu va fi posibil. În acest caz, atunci când creați o conexiune în chit, specificați un alt port ca „Port sursă”, de exemplu, 3307 . Utilizați acest port când vă conectați la baza de date.

Conectarea la o bază de date MySQL de pe un computer care rulează sistemul de operare Linux

La promptul de comandă, rulați următoarea comandă:

Ssh -L3306:localhost:3306 -n [email protected]

  • 3306 (imediat după tasta -L) - portul activat calculator local, la care vă puteți conecta cu clientul mysql;
  • autentificarea ta- numele contului dumneavoastră (autentificare în Panoul de control);
  • domeniul tău.ru- numele site-ului dvs.

Ca parolă, utilizați parola pentru a vă conecta la Panoul de control al găzduirii.

Tunelul este instalat. Pentru a vă conecta la baza de date, utilizați numele de utilizator și parola pe care le-ați specificat la crearea bazei de date în secțiunea Baze de date din Panoul de control. Utilizați 127.0.0.1 ca adresă de server, portul de conexiune 3306.

Un exemplu de conectare folosind programul mysql (o parolă va fi solicitată la conectare):

Mysql -P 3306 -h 127.0.0.1 -u mylogin_user -p mylogin_db

Atenţie: Dacă computerul dvs. rulează deja un server de baze de date MySQL, conectarea la un server la distanță pe portul 3306 nu va fi posibilă. În acest caz, la pornirea ssh, imediat după tasta -L, specificați port alternativ de ex. 3307. Utilizați acest port când vă conectați la baza de date.

Verificarea conexiunii la baza de date MySQL

Puteți verifica conexiunea la baza de date folosind utilitarul telnet. Conectați-vă la interfață Linie de comanda(în sistemul de operare MS Windows: Start → Run→ cmd.exe), tastați comanda:

Telnet 127.0.0.1 3306

Dacă conexiunea este stabilită, procedura de configurare a tunelului poate fi considerată finalizată. În caz contrar, trebuie să verificați cu atenție setările, să vă asigurați că nu există probleme de rețea și să contactați asistența tehnică.

Acest articol este pentru cei care se confruntă cu necesitatea de a stabili o conexiune de la distanță la o bază de date MySQL pentru prima dată. Articolul vorbește despre dificultățile care pot apărea la configurare conexiune la distanțăși despre metodele de a le depăși.

Cum se stabilește o conexiune cu o bază de la distanță?
Pentru a stabili o conexiune la distanță, trebuie să specificați parametrii care caracterizează conexiunea care se stabilește. Acest

* --gazdă
* --protocol
* --port

Dintre cele patru protocoale posibile conexiune la distanță permite doar TCP/IP, deci prima cerință este ca computerul să fie accesibil din rețea prin TCP/IP. Apoi, trebuie să adăugați numele gazdei (sau adresa IP a mașinii pe care se află baza de date) în linia de conectare:
mysql —host=host_name Vă rugăm să rețineți că specificarea localhost ca nume de gazdă (sau absența unui astfel de parametru, care este același, deoarece aceasta este valoarea implicită) are ca rezultat accesul la mașina locală.

Vă rugăm să rețineți că parametrii au două forme de notație: lung și scurt. La rândul său, dacă parametrul are o valoare (de exemplu, în cazul unei gazde, trebuie să specificați numele gazdei la care doriți să vă conectați), atunci forma scurtă a intrării poate fi utilizată cu sau fără un spațiu (excepția de la această regulă este parola). Deci următoarele trei intrări sunt echivalente:

* mysql —host=myhost.ru
* mysql -h myhost.ru
* mysql -hmyhost.ru

Cum se configurează o conexiune la o bază la distanță?

În MySQL, un utilizator este caracterizat de doi parametri: un nume și o gazdă de la care poate accesa. În mod implicit, accesul este permis numai de pe mașina locală, de exemplu. pentru utilizator user@localhost. Drepturile de acces sunt acordate utilizatorilor folosind comanda GRANT. Comanda este executată sub root.

De exemplu, dacă vreau să creez un utilizator care să se poată conecta de la orice gazdă cu drepturi depline, atunci ar trebui să rulați următoarea comandă:
ACORDAȚI TOATE PRIVILEGIILE PE `database_name`.* CĂTRE myuser@% IDENTIFICAT DE 'parolă';

Notă. Rețineți că această comandă oferă acces utilizatorului myuser de la toate IP-urile cu excepția 127.0.0.1, care corespunde localhost.
Pentru utilizatorul myuser@localhost, trebuie să acordați drepturi folosind o comandă GRANT separată.

Dacă decideți să contactați mașină localăîn ceea ce privește unul la distanță care utilizează protocolul TCP/IP, nu uitați că myuser@localhost și myuser@ip_of_your_computer sunt utilizatori diferiți iar fiecare dintre ei trebuie să primească drepturi printr-o comandă separată.

Al doilea exemplu arată cum se acordă dreptul de a citi tabelul fus orar din baza de date utilizator mysql myuser de pe mașina 192.168.0.76 cu parola mypassy:
Acordați SELECTARE PE mysql.time_zone TO [email protected] IDENTIFICAT DE „mypassy”;
Dificultăți emergente

Dacă după toți pașii primiți o eroare (Nu se poate conecta la Mysql Server pe „IP-ul tău” (10061)), ceea ce înseamnă că conexiunea este blocată de firewall ( firewall windows, avanpost, antivirus sau altceva).

Dacă apare o eroare (clientul nu acceptă cererea de protocol de autentificare de către server; luați în considerare actualizarea clientului MySQL), clientul (adică programul dvs.) nu acceptă protocolul cerut de server.
Această eroare poate fi remediată setând parola la vechiul format:
SETĂ PAROLA PENTRU utilizator@gazdă = OLD_PASSWORD('parolă');

Rău Bun

    Acest articol descrie ce trebuie să faceți dacă ați uitat parola de administrator sau ați șters accidental utilizatorul root. Articolul este axat pe primul...

    Aveam nevoie să organizez replicarea bazei de date în două sensuri pe două servere mysql care rulează pe aceeași mașină. S-ar părea că nu este nimic complicat sau special aici, dar...

Pentru un serviciu care rulează pe o altă mașină. ÎN caz general trebuie să facem 2 pași:

a) Permiteți serverului MySQL să asculte interfețe de rețea(nu numai pe 127.0.0.1)

b) Creați permisiuni pentru utilizatorii rețelei.

Dacă primul punct este mai mult sau mai puțin clar, atunci punctul (b) necesită clarificare. Faptul este că de obicei utilizatorii sunt creați ca „nume utilizator”@”localhost”, ceea ce le permite să se agațe cu anumite privilegii de anumite baze de date, dar numai din localhost. Din rețea, acești utilizatori nu se pot conecta - MySQL le spune că parola sau numele de utilizator sunt incorecte. Trucul este că MySQL conține o listă de utilizatori, împărțiți pe mașini de la care se pot conecta. Deci, utilizatorul User1 se poate conecta de la localhost cu parola ABCD, de la adresa 192.168.0.1 poate fi înregistrat cu parola BBBCCC, iar de la adresa 192.168.1.1 - cu parola BCDE și doar pentru unele baze de date. Acestea. putem seta de la ce computere i se permite utilizatorului să se conecteze, ce parolă va avea în acest caz și la ce baze de date va avea privilegii. De fapt, dacă ne uităm la baza de date mysql, vom vedea că acesta nu este un utilizator, ci 3 utilizatori diferiți: user1@localhost, [email protected]Și [email protected]. Acestea. din punct de vedere MySQL, aceștia sunt utilizatori diferiți, respectiv, având privilegii și parole diferite. Astfel, pentru a obține acces din rețea, trebuie să creăm utilizatori suplimentari în MySQL, indicând altceva decât localhost. Mai mult, puteți fie să specificați adrese IP specifice de la care acești utilizatori au voie să se conecteze, fie caracter special„%” care înseamnă „orice computere, altele decât localhost”. Iată un exemplu de nume de utilizator:

    username@"localhost": se poate conecta numai de la localhost

    username@"192.168.0.1": se poate conecta numai de la 192.168.0.1

    username@"%" : se poate conecta de pe orice computer, cu excepția localhost

    username@"192.168.0.%" : se poate conecta de pe orice computer a cărui adresă IP începe cu 192.168.0.

După cum puteți vedea, utilizatorul trebuie întotdeauna specificat separat pentru localhost. Dacă trebuie să specificați mai multe adrese IP pentru un utilizator... va trebui să introduceți aceste adrese IP separat, din păcate, sau separate prin virgulă, dar după fiecare virgulă - din nou o construcție ca IDENTIFIED BY. Deci, să dăm acces serverului MySQL din rețea. 1) În primul rând, trebuie să verificați dacă serverul ascultă cererile nu numai pe localhost.

Pentru Debian:

Deschideți fișierul /etc/mysql/my.cnf și căutați linia de adresă de legătură în el. Avem nevoie ca acesta să fie necomentat și să conțină valoarea 0.0.0.0:

# cat /etc/mysql/my.cnf | grep bind-adresă

bind-adresă = 0.0.0.0

Dacă ați schimbat linia, trebuie să reporniți serverul MySQL:

# /etc/init.d/mysql reporniți

PentruFreeBSD:

Implicit în Server FreeBSD MySQL ascultă pe toată lumea interfețe disponibileși nimic suplimentar nu trebuie schimbat.

2) Acum trebuie să adăugați utilizatori care au acces din rețea. Fără aceasta, serverul va asculta rețeaua, dar tot nu vă va lăsa să intrați.

# mysql-uroot–p

Parola: // salut MySQL

mysql> ACORDĂ TOATE PRIVILEGIILE PE *.* CĂTRE „utilizator1”@”192.168.0.%” IDENTIFICAT DE „parola1”;

mysql> ACCORDĂ TOATE PRIVILEGIILE PE mydatabase.* CĂTRE „utilizator2”@”%” IDENTIFICAT DE „parola2”;

În acest cod, utilizatorului user1 i se permite accesul complet la toate bazele de date de pe server, dar numai de pe computere din rețeaua 192.168.0.*

Al doilea utilizator are voie să se autentifice de pe orice computer (cu excepția localhost, desigur), dar are acces deplin doar la baza mea de date. În mod similar, puteți adăuga utilizatorii necesari cu privilegiile necesare.

3) Verificați acces la retea.

$ mysql -u nume de utilizator -p -h 192.168.0.100

În loc de 192.168.0.100 - specificați adresa IP a mașinii cu Server MySQL, iar în loc de nume de utilizator - numele de utilizator. Dacă serverul nu vă lasă să intrați, verificați în primul rând dacă există firewall-uri în drum spre el și dacă portul MySQL: 3306 este deschis pe aceste firewall.