PHP, MySQL - Formular de inregistrare a utilizatorilor
Cuprins:
- Configurarea serverului MySQL
- Acordarea accesului unui utilizator de la un aparat de la distanță
- Configurarea firewallului
- iptables
- UFW
- FirewallD
- Verificarea modificărilor
- Concluzie
Î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
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:
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:
- 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.
Patch-urile care vor fi lansate pe așa-numitul Patch Tuesday includ remedii pentru o vulnerabilitate care permite execuția codului la distanță în Windows Media Player 11 pe diferite sisteme de operare Microsoft și pentru o vulnerabilitate care permite executarea codului la distanță în diferite versiuni a sistemului de operare Windows și a produselor conexe, inclusiv 2003 Server, Vista, XP, Office, .Net Framework, Works, Visual Studio, Visual FoxPro și alte programe.

Celelalte două patch-uri vor adresa execuția codului la distanță în Windows Media Encoder 9 și în Office OneNote 2007.
Conexiunile lente Wi-Fi în locuri publice, cum ar fi aeroporturile și cafenelele, ar putea fi un lucru din trecut, datorită cercetătorilor de la Universitatea de Stat din Carolina de Nord, care au elaborat un nou protocol care ar putea accelera conexiunile cu până la 700%. > Viteza conexiunilor Wi-Fi poate deveni lentă atunci când un număr mare de utilizatori utilizează același hotspot. Acest lucru se datorează faptului că punctele de acces Wi-Fi la care sunt conectate trebuie să trimită date în

Cercetătorii cred că au găsit o soluție pentru această problemă, care nu necesită un nou hardware de rețea. Soluția, numită WiFox, este un software care monitorizează cantitatea de trafic pe un canal Wi-Fi și, pe măsură ce devine mai ocupat, începe să prioritizeze datele, astfel încât conexiunea să rămână rapidă pentru toți utilizatorii care accesează hotspotul.
Organizator desktop la distanță: Gestionați conexiunile la distanță pentru desktop

Organizatorul desktop la distanță este un client desktop la distanță, într-un singur loc