Android

Cum puteți permite conexiunile la distanță la serverul de bază mysql

PHP, MySQL - Formular de inregistrare a utilizatorilor

PHP, MySQL - Formular de inregistrare a utilizatorilor

Cuprins:

Anonim

În mod implicit, serverul MySQL ascultă conexiunile numai de la localhost, ceea ce înseamnă că poate fi accesat doar de aplicațiile care rulează pe aceeași gazdă.

Cu toate acestea, în unele situații, este necesar să accesați serverul MySQL din locație de la distanță. De exemplu, când doriți să vă conectați la serverul MySQL la distanță din sistemul dvs. local sau când utilizați o implementare multi-server în care aplicația rulează pe o mașină diferită de serverul bazei de date. O opțiune ar fi să accesezi serverul MySQL prin SSH Tunnel și o altă este să configurezi serverul MySQL pentru a accepta conexiuni la distanță.

În acest ghid, vom parcurge pașii necesari pentru a permite conexiunile la distanță la un server MySQL. Aceleași instrucțiuni se aplică și pentru MariaDB.

Configurarea serverului MySQL

Primul pas este să setați serverul MySQL să asculte pe o anumită adresă IP sau toate adresele IP de pe mașină.

Dacă serverul MySQL și clienții pot comunica între ei printr-o rețea privată, atunci cea mai bună opțiune este să setați serverul MySQL să asculte doar pe IP-ul privat. În caz contrar, dacă doriți să vă conectați la server printr-o rețea publică, setați serverul MySQL să asculte toate adresele IP de pe mașină.

Pentru a face acest lucru, trebuie să editați fișierul de configurare MySQL și să adăugați sau să modificați valoarea opțiunii de bind-address . Puteți seta o singură adresă IP și intervale IP. Dacă adresa este 0.0.0.0 , serverul MySQL acceptă conexiuni pe toate interfețele IPv4 gazdă. Dacă aveți IPv6 configurat pe sistemul dvs., atunci în loc de 0.0.0.0 , utilizați :: .

Locația fișierului de configurare MySQL diferă în funcție de distribuție. În Ubuntu și Debian, fișierul este situat la /etc/mysql/mysql.conf.d/mysqld.cnf , în timp ce în distribuțiile bazate pe Red Hat, cum ar fi CentOS, fișierul este localizat la /etc/my.cnf .

Deschideți fișierul cu editorul de text:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

Căutați o linie care începe cu bind-address și setați-i valoarea la adresa IP pe care ar trebui să o asculte un server MySQL.

În mod implicit, valoarea este setată la 127.0.0.1 (ascultă doar în localhost).

În acest exemplu, vom seta serverul MySQL să asculte pe toate interfețele IPv4 schimbând valoarea la 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Dacă există o linie care conține skip-networking , ștergeți-o sau comentați-o adăugând # la începutul liniei.

În MySQL 8.0 sau o versiune ulterioară, este posibil ca directiva de bind-address să nu fie prezentă. În acest caz, adăugați-l sub secțiune.

Odată terminat, reporniți serviciul MySQL pentru ca modificările să aibă efect. Doar root sau utilizatorii cu privilegii sudo pot reporni serviciile.

Pentru a reporni serviciul MySQL pe Debian sau Ubuntu, introduceți:

sudo systemctl restart mysql

Pe distribuțiile bazate pe RedHat, cum ar fi CentOS, pentru a reporni rularea serviciului:

sudo systemctl restart mysqld

Acordarea accesului unui utilizator de la un aparat de la distanță

Următorul pas este de a permite accesul la baza de date utilizatorului de la distanță.

Conectați-vă la serverul MySQL ca utilizator rădăcină tastând:

sudo mysql

mysql -uroot -p

Din interiorul shell-ului MySQL, utilizați instrucțiunea GRANT pentru a acorda acces utilizatorului de la distanță.

GRANT ALL ON database_name.* TO user_name@'ip_address' IDENTIFIED BY 'user_password';

Unde:

  • database_name este numele bazei de date cu care utilizatorul se va conecta. user_name este numele odat de utilizator MySQL. ip_address este adresa IP de la care se va conecta utilizatorul. Utilizați % pentru a permite utilizatorului să se conecteze de la orice adresă IP. user_password este parola utilizatorului.

De exemplu, pentru a acorda acces la un nume de bază de date unui utilizator numit foo cu parola my_passwd la un computer client cu IP 10.8.0.5 , ar trebui să rulați:

GRANT ALL ON dbname.* TO foo@'10.8.0.5' IDENTIFIED BY 'my_passwd';

Configurarea firewallului

Ultimul pas este să configurați firewallul pentru a permite traficul pe portul 3306 (portul implicit MySQL) de la mașinile de la distanță.

iptables

sudo iptables -A INPUT -p tcp --destination-port 3306 -j ACCEPT

Permiteți accesul de la o anumită adresă IP:

sudo iptables -A INPUT -s 10.8.0.5 -p tcp --destination-port 3306 -j ACCEPT

UFW

UFW este instrumentul de firewall implicit în Ubuntu. Pentru a permite accesul de pe orice adresă IP de pe Internet (foarte nesigur), executați:

sudo ufw allow 3306/tcp

Permiteți accesul de la o anumită adresă IP:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD este instrumentul implicit de gestionare a firewall-ului din CentOS. Pentru a permite accesul de la orice adresă IP de pe Internet (foarte nesigur):

sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp sudo firewall-cmd --reload

Pentru a permite accesul de la o anumită adresă IP pe un anumit port, puteți crea fie o nouă zonă FirewallD, fie utiliza o regulă bogată. Ei bine, creați o nouă zonă numită mysqlzone :

sudo firewall-cmd --new-zone=mysqlzone --permanent sudo firewall-cmd --reload sudo firewall-cmd --permanent --zone=mysqlzone --add-source=10.8.0.5/32 sudo firewall-cmd --permanent --zone=mysqlzone --add-port=3306/tcp sudo firewall-cmd --reload

Verificarea modificărilor

Pentru a verifica dacă utilizatorul la distanță se poate conecta la serverul MySQL, executați următoarea comandă:

mysql -u user_name -h mysql_server_ip -p

Unde numele utilizatorului este numele utilizatorului căruia i-ați acordat acces și mysql_server_ip este adresa IP a gazdei pe care rulează serverul MySQL.

Dacă totul este configurat corect, veți putea să vă conectați la serverul MySQL de la distanță.

ERROR 2003 (HY000): Can't connect to MySQL server on '10.8.0.5' (111)"

Eroarea de mai jos indică faptul că utilizatorul la care încercați să vă conectați nu are permisiuni pentru a accesa serverul MySQL de la distanță.

"ERROR 1130 (HY000): Host '10.8.0.5' is not allowed to connect to this MySQL server"

Concluzie

MySQL, cel mai popular server de baze de date open-source, implicit, ascultă conexiunile primite doar pe localhost.

Pentru a permite conexiunile la distanță la un server MySQL, trebuie să efectuați următorii pași:

  1. Configurați serverul MySQL pentru a asculta pe toată interfața sau pe o anumită interfață.Obțineți acces la utilizatorul de la distanță. Deschideți portul MySQL din firewallul dvs.
mysql mariadb