Android

Kuinka sallia etäyhteydet mysql-tietokantapalvelimeen

Yhdistysten vuosikokoukset poikkeustilan aikana -webinaari

Yhdistysten vuosikokoukset poikkeustilan aikana -webinaari

Sisällysluettelo:

Anonim

Oletuksena MySQL-palvelin kuuntelee yhteyksiä vain localhostilta, mikä tarkoittaa, että sitä voivat käyttää vain samassa isäntäkoneessa toimivat sovellukset.

Joissakin tilanteissa on kuitenkin välttämätöntä käyttää MySQL-palvelinta etäältä. Esimerkiksi, kun haluat muodostaa yhteyden etä MySQL-palvelimeen paikallisesta järjestelmästä tai kun käytät monipalvelimen käyttöönottoa, jossa sovellus toimii toisella koneella kuin tietokantapalvelin. Yksi vaihtoehto olisi käyttää MySQL-palvelinta SSH-tunnelin kautta ja toinen on määrittää MySQL-palvelin hyväksymään etäyhteydet.

Tässä oppaassa käydään läpi vaiheet, jotka ovat tarpeen etäyhteyksien sallimiseksi MySQL-palvelimeen. Samat ohjeet koskevat myös MariaDB: tä.

MySQL-palvelimen määrittäminen

Ensimmäinen askel on asettaa MySQL-palvelin kuuntelemaan tiettyä IP-osoitetta tai kaikkia koneen IP-osoitteita.

Jos MySQL-palvelin ja asiakkaat voivat kommunikoida keskenään yksityisen verkon kautta, paras vaihtoehto on asettaa MySQL-palvelin kuuntelemaan vain yksityisellä IP: llä. Muussa tapauksessa, jos haluat muodostaa yhteyden palvelimeen julkisen verkon kautta, aseta MySQL-palvelin kuuntelemaan kaikkia koneen IP-osoitteita.

Sinun on muokattava MySQL-määritystiedostoa ja lisättävä tai muutettava bind-address asetuksen arvoa. Voit asettaa yhden IP-osoitteen ja IP-alueet. Jos osoite on 0.0.0.0 , MySQL-palvelin hyväksyy yhteydet kaikkiin isäntä IPv4-rajapintoihin. Jos järjestelmässäsi on määritetty IPv6, käytä 0.0.0.0 sijasta :: .

MySQL-määritystiedoston sijainti vaihtelee jakelusta riippuen. Ubuntu- ja Debian-tiedostoissa tiedosto sijaitsee /etc/mysql/mysql.conf.d/mysqld.cnf , kun taas Red Hat -pohjaisissa jakeluissa, kuten CentOS, tiedosto sijaitsee /etc/my.cnf .

Avaa tiedosto tekstieditorilla:

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

Etsi rivi, joka alkaa bind-address ja aseta sen arvo IP-osoitteeseen, jota MySQL-palvelimen tulisi kuunnella.

Oletuksena arvoksi on asetettu 127.0.0.1 (kuuntelee vain localhostissa).

Tässä esimerkissä asetamme MySQL-palvelimen kuuntelemaan kaikkia IPv4-rajapintoja muuttamalla arvoksi 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Jos on rivi, joka sisältää skip-networking , poista se tai kommentoi sitä lisäämällä # rivin alkuun.

MySQL 8.0: ssa ja uudemmissa versioissa bind-address -direktiiviä ei ehkä ole. Lisää tässä tapauksessa se kohtaan osiossa.

Kun olet valmis, käynnistä MySQL-palvelu uudelleen, jotta muutokset tulevat voimaan. Vain pääkäyttäjät tai käyttäjät, joilla on sudo-oikeudet, voivat käynnistää palvelut uudelleen.

Voit käynnistää MySQL-palvelun uudelleen Debianissa tai Ubuntussa kirjoittamalla:

sudo systemctl restart mysql

RedHat-pohjaisissa jakeluissa, kuten CentOS, palvelun käynnistämiseksi uudelleen:

sudo systemctl restart mysqld

Käyttäjälle käyttöoikeuden myöntäminen etäkoneelta

Seuraava vaihe on sallia pääsy tietokantaan etäkäyttäjälle.

Kirjaudu sisään MySQL-palvelimeen pääkäyttäjänä kirjoittamalla:

sudo mysql

mysql -uroot -p

Myönnä MySQL-kuoren sisällä GRANT käsky myöntääksesi pääsyn etäkäyttäjälle.

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

Missä:

  • database_name on sen database_name nimi, johon käyttäjä muodostaa yhteyden. käyttäjänimi on MySQL-käyttäjän nimi. ip_address on IP-osoite, josta käyttäjä muodostaa yhteyden. Käytä % antaaksesi käyttäjän muodostaa yhteyden mistä tahansa IP-osoitteesta. user_password on käyttäjän salasana.

Jos esimerkiksi haluat myöntää käyttöoikeuden tietokannan dbname käyttäjälle nimeltä foo salasanalla my_passwd IP 10.8.0.5 , suoritat seuraavan:

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

Palomuurin määrittäminen

Viimeinen vaihe on määrittää palomuuri sallimaan liikenne 3306 (MySQL-oletusportti) etäkoneista.

iptables

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

Salli pääsy tietyltä IP-osoitteelta:

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

UFW

UFW on Ubuntun oletuspalomuurityökalu. Pääsyn salliminen mistä tahansa Internet-osoitteesta (erittäin epävarma) suoritetaan:

sudo ufw allow 3306/tcp

Salli pääsy tietyltä IP-osoitteelta:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD on CentOS: n oletuspalomuurin hallintatyökalu. Voit sallia pääsyn mistä tahansa Internet-osoitteesta (erittäin epävarma):

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

Jos haluat sallia pääsyn tietystä IP-osoitteesta tietyllä portilla, voit joko luoda uuden FirewallD-vyöhykkeen tai käyttää Rich-sääntöä. Luo uusi vyöhyke nimeltään 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

Muutosten tarkistaminen

Suorita seuraava komento varmistaaksesi, että etäkäyttäjä voi muodostaa yhteyden MySQL-palvelimeen:

mysql -u user_name -h mysql_server_ip -p

Missä käyttäjän_nimi on käyttäjän nimi, jolle olet myöntänyt käyttöoikeuden, ja mysql_server_ip on isäntäkoneen IP-osoite, jossa MySQL-palvelin toimii.

Jos kaikki on asetettu oikein, voit kirjautua sisään etä MySQL-palvelimeen.

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

Alla oleva virhe ilmaisee, että sisään yritettävällä käyttäjällä ei ole oikeuksia päästä MySQL-etäpalvelimeen.

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

johtopäätös

MySQL, oletuksena suosituin avoimen lähdekoodin tietopalvelin, kuuntelee saapuvia yhteyksiä vain localhostissa.

Jotta etäyhteydet MySQL-palvelimeen, sinun on suoritettava seuraavat vaiheet:

  1. Määritä MySQL-palvelin kuuntelemaan kaikkia tai tiettyä käyttöliittymää. Anna käyttöoikeus etäkäyttäjälle.Avaa palomuurisi MySQL-portti.
mysql mariadb