Android

Kako dopustiti daljinske veze na mysql poslužitelj baze podataka

Iluzija ljubavi- Ana Bučević

Iluzija ljubavi- Ana Bučević

Sadržaj:

Anonim

MySQL poslužitelj prema zadanim postavkama sluša veze samo iz localhosta, što znači da mogu pristupiti samo aplikacije koje pokreću isti domaćin.

Međutim, u nekim je situacijama potrebno pristupiti MySQL poslužitelju s udaljene lokacije. Na primjer, kada se želite povezati s udaljenim MySQL poslužiteljem iz vašeg lokalnog sustava ili kada koristite implementaciju s više poslužitelja gdje se aplikacija izvodi na drugom stroju od poslužitelja baze podataka. Jedna opcija bi bila pristup MySQL poslužitelju putem SSH tunela, a druga je konfiguriranje MySQL poslužitelja za prihvaćanje udaljenih veza.

U ovom ćemo vodiču proći korake potrebne za daljinsko povezivanje s MySQL poslužiteljem. Iste upute vrijede i za MariaDB.

Konfiguriranje MySQL poslužitelja

Prvi korak je postavljanje MySQL poslužitelja za slušanje određene IP adrese ili svih IP adresa na uređaju.

Ako MySQL poslužitelj i klijenti mogu međusobno komunicirati preko privatne mreže, tada je najbolja opcija da se MySQL poslužitelj posluži samo na privatnom IP-u. U suprotnom, ako se želite povezati s poslužiteljem preko javne mreže, postavite MySQL poslužitelj da sluša na svim IP adresama na uređaju.

Da biste to učinili, morate urediti MySQL konfiguracijsku datoteku i dodati ili promijeniti vrijednost opcije bind-address . Možete postaviti jednu IP adresu i IP raspone. Ako je adresa 0.0.0.0 , MySQL poslužitelj prihvaća veze na svim host IPv4 sučeljima. Ako imate konfiguriran IPv6 na vašem sustavu, umjesto 0.0.0.0 koristite :: .

Lokacija MySQL konfiguracijske datoteke razlikuje se ovisno o distribuciji. U Ubuntu i Debian datoteka se nalazi na /etc/mysql/mysql.conf.d/mysqld.cnf , dok se u Red Hat baziranim distribucijama, kao što je CentOS, datoteka nalazi na /etc/my.cnf .

Otvorite datoteku s uređivačem teksta:

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

Potražite liniju koja počinje s bind-address i postavite njezinu vrijednost na IP adresu na kojoj bi MySQL poslužitelj trebao slušati.

Prema zadanim postavkama vrijednost je postavljena na 127.0.0.1 (sluša se samo u localhostu).

U ovom ćemo primjeru postaviti MySQL poslužitelj da sluša na svim IPv4 sučeljima mijenjanjem vrijednosti u 0.0.0.0

mysqld.cnf

bind-address = 0.0.0.0 # skip-networking

Ako postoji linija koja sadrži skip-networking , izbrišite je ili komentirajte dodavanjem # na početku retka.

U MySQL 8.0 i novijim bind-address direktiva bind-address možda nije prisutna. U tom slučaju dodajte je ispod odjeljak.

Nakon završetka, ponovno pokrenite MySQL uslugu da bi promjene stupile na snagu. Samo root ili korisnici s sudo povlasticama mogu ponovno pokrenuti usluge.

Da biste ponovo pokrenuli MySQL uslugu na Debianu ili Ubuntuu, upišite:

sudo systemctl restart mysql

Na distribucijama temeljenim na RedHatu kao što je CentOS za ponovno pokretanje servisa:

sudo systemctl restart mysqld

Omogućavanje pristupa korisniku s udaljenog stroja

Sljedeći je korak omogućiti pristup bazi udaljenog korisnika.

Prijavite se na MySQL poslužitelj kao korijenski korisnik upisivanjem:

sudo mysql

mysql -uroot -p

Iznutra MySQL ljuske, koristite GRANT izraz za odobrenje pristupa udaljenom korisniku.

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

Gdje:

  • database_name je naziv baze podataka s kojom će se korisnik povezati. user_name je ime MySQL korisnika. ip_address je IP adresa s koje će se korisnik povezati. Upotrijebite % da biste se omogućili povezivanju s bilo koje IP adrese. user_password je korisnička lozinka.

Na primjer, da biste dodijelili pristup dbname baze podataka korisniku s imenom foo sa lozinkom my_passwd s klijentskog računala s IP 10.8.0.5 , 10.8.0.5 biste:

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

Konfiguriranje vatrozida

Posljednji korak je konfiguriranje vatrozida tako da dopušta promet na priključku 3306 (MySQL zadani ulaz) s udaljenih računala.

iptables

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

Omogući pristup s određene IP adrese:

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

izgubljene vode

UFW je zadani alat vatrozida u Ubuntuu. Da biste omogućili pristup s bilo koje IP adrese na Internetu (vrlo nesigurno):

sudo ufw allow 3306/tcp

Omogući pristup s određene IP adrese:

sudo ufw allow from 10.8.0.5 to any port 3306

FirewallD

FirewallD je zadani alat za upravljanje zaštitnim zidom u CentOS-u. Da biste omogućili pristup s bilo koje IP adrese na Internetu (vrlo nesigurno), unesite:

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

Da biste omogućili pristup s određene IP adrese na određenom portu, možete stvoriti novu FirewallD zonu ili upotrijebiti bogato pravilo. Pa stvorite novu zonu pod nazivom 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

Provjera promjena

Da biste potvrdili da se udaljeni korisnik može povezati s MySQL poslužiteljem, pokrenite sljedeću naredbu:

mysql -u user_name -h mysql_server_ip -p

Tamo gdje je user_name ime korisnika kojem ste odobrili pristup, a mysql_server_ip je IP adresa glavnog računala na kojem se pokreće MySQL poslužitelj.

Ako je sve ispravno postavljeno, moći ćete se prijaviti na udaljeni MySQL poslužitelj.

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

Donja pogreška označava da korisnik na koji se pokušavate prijaviti nema dopuštenja za pristup udaljenom MySQL poslužitelju.

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

Zaključak

MySQL, najpopularniji poslužitelj otvorenih koda po defaultu, sluša dolazne veze samo na localhostu.

Da biste omogućili udaljene veze s MySQL poslužiteljem, morate izvršiti sljedeće korake:

  1. Konfigurirajte MySQL poslužitelj da sluša na svim ili određenom sučelju. Osigurajte pristup udaljenom korisniku. Otvorite MySQL port na vatrozidu.
mysql mariadb