Kako dopustiti udaljene veze na MySQL

Ako radite s MySQL bazom podataka(MySQL database) , tada ste već svjesni izazova s ​​kojima se susrećete u održavanju sigurnosti baze podataka. Od pokušaja hakiranja baze podataka korištenjem SQL injekcija do napada grubom silom, teško je sačuvati vaše podatke, pogotovo ako s bazom podataka radite na daljinu.

Postoje načini za konfiguriranje SQL poslužitelja da omogući udaljene veze, ali morate biti oprezni, jer dopuštanje udaljenih veza na MySQL poslužitelju može vašu bazu podataka učiniti lakom metom za hakere. Ako želite dopustiti sigurne, udaljene veze s MySQL bazom podataka, evo što trebate znati.

Prije nego što počneš(Before You Begin)

Prije nego što napravite bilo kakve promjene u vašoj MySQL bazi podataka, važno je da napravite sigurnosnu kopiju baze podataka(backup your database) , osobito ako radite na proizvodnom poslužitelju (poslužitelju u aktivnoj upotrebi). Sve promjene koje izvršite u svojoj bazi podataka ili poslužitelju na kojem je smještena mogu dovesti do ozbiljnog gubitka podataka ako nešto pođe po zlu.

Možda ćete također otkriti da bi vas promjene u vezama vašeg poslužitelja mogle spriječiti da mu kasnije pristupite. Ako se to dogodi, možda ćete se morati posavjetovati s administratorom poslužitelja za daljnju podršku. Dobra ideja je isprobati sve promjene na lokalno pokrenutom MySQL poslužitelju kako biste provjerili funkcioniraju li vaše promjene prije nego što ih isprobate na daljinu.

Također je vjerojatno da će vam, ako unosite promjene na udaljenom poslužitelju, trebati siguran način povezivanja i izmjena. SSH (Secure Shell) je često najbolji način za to, jer vam omogućuje povezivanje s udaljenim poslužiteljem. Također možete koristiti SSH za povezivanje s poslužiteljima na vašoj lokalnoj mreži, kao što su oni koji se nalaze na Raspberry Pi(hosted on a Raspberry Pi) .

Ovaj vodič će vas voditi kroz korake za konfiguriranje MySQL -a za omogućavanje daljinskih veza, ali prvo morate osigurati da imate izravan ili udaljeni pristup poslužitelju na kojem se nalazi vaš MySQL poslužitelj.

Pretpostavimo(Suppose) da nemate daljinski pristup svom poslužitelju putem SSH -a (na primjer). U tom slučaju nećete moći konfigurirati svoju MySQL bazu podataka da dopušta izravno udaljene veze osim ako vaš root mySQL račun već dopušta udaljene veze. Dakle, morat ćete prvo uspostaviti ovu vezu prije nego što nastavite.

Uređivanje vaše MySQL konfiguracijske datoteke(Editing Your MySQL Configuration File)

Prvi korak u konfiguriranju MySQL -a za omogućavanje udaljenih veza je uređivanje vaše MySQL konfiguracijske datoteke. U ovoj fazi, ovaj vodič će pretpostaviti da ste se već spojili na poslužitelj, PC ili Mac koji udaljeno hostira vašu mySQL bazu podataka i da imate pristup konzoli. 

Alternativno, možete konfigurirati lokalni MySQL poslužitelj pomoću otvorenog terminala na Macu(Mac) ili Linuxu(Linux) ili uređivača teksta na Windowsu(Windows) .

  1. Za početak, upotrijebite željeni uređivač teksta na konzoli da uredite svoju MySQL datoteku baze podataka. Na Linuxu(Linux) upišite sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf u terminal ili SSH prozor da biste uredili ovu datoteku pomoću nano uređivača (pod pretpostavkom da je vaša MySQL baza podataka na zadanoj lokaciji)

  1. Ako koristite Windows , otvorite File Explorer i pristupite mapi koja sadrži vašu MySQL instalaciju (npr. C:/Program Files/MySQL/MySQL Server 8.0 ). Otvorite my.ini datoteku pomoću zadanog uređivača teksta (npr. Notepad ) dvostrukim klikom na unos. Ako ga nema, prvo kreirajte datoteku(create the file first) .

  1. Na Macu(Mac) otvorite prozor terminala i upišite sudo nano /usr/local/etc/my.cnf . Ovo je zadana konfiguracijska datoteka za MySQL ako ste instalirali MySQL koristeći homebrew(using homebrew) .

Gore navedene lokacije su zadane lokacije za MySQL konfiguracijske datoteke. Ako ove naredbe ne rade, morat ćete ručno potražiti relevantne datoteke ( my.cnf , mysqld.cnf ili my.ini ) kako biste locirali relevantnu putanju datoteke.

Postavljanje sigurnog raspona IP adresa vezanja(Setting a Safe Bind-Address IP Range)

  1. Nakon što otvorite MySQL konfiguracijsku datoteku za svoj poslužitelj, koristite tipku sa strelicom na tipkovnici da biste došli do odjeljka adrese vezanja datoteke. (bind-address)Ovaj raspon IP-a ograničava veze s vašom bazom podataka, koja je obično postavljena tako da dopušta veze samo s lokalnog stroja ili poslužitelja pomoću 127.0.0.1 .

  1. Ako želite konfigurirati svoju MySQL bazu podataka da dopušta veze s uređaja koji koriste vašu trenutnu internetsku vezu, prvo pronađite svoju javnu IP adresu(find your public IP address) , a zatim zamijenite 127.0.0.1 tom IP adresom. Alternativno, zamijenite ga IP adresom za uređaj ili poslužitelj s kojeg želite dopustiti veze.

  1. U nekim okolnostima, možda ćete htjeti dopustiti sve(all) udaljene veze s MySQL bazom podataka. To nosi izniman rizik(extreme risk) i ne bi se trebalo koristiti na proizvodnom poslužitelju. Međutim, ako to želite dopustiti, zamijenite 127.0.0.1 s 0.0.0.0 .

  1. Zabilježite vrijednost porta(port ) u odjeljku Osnovne postavke(Basic Settings) . To će biti potrebno u sljedećem odjeljku. Ako nije vidljiv, koristit će se zadana vrijednost, a to je port 3306 . Možete dodati svoj vlastiti port tako da upišete port = xxxx u novi red, zamjenjujući xxxx odgovarajućom vrijednošću porta.

  1. Nakon što ste konfigurirali vezu-adresu(bind-address ) u svojoj MySQL konfiguracijskoj datoteci, spremite datoteku. Ako koristite Linux , odaberite Ctrl + O i Ctrl + X da biste to učinili. Na Macu odaberite Command + O i Command + X . Korisnici sustava Windows mogu spremiti odabirom Datoteka(File ) > Spremi(Save) .

  1. Zatim, korisnici Linuxa(Linux) i Maca(Mac) mogu ponovno pokrenuti MySQL upisivanjem mysql.server stop && mysql.server start ili mysql.server restart . Možda ćete morati podići naredbu koristeći sudo(using sudo) (npr. sudo mysql.server restart ) i koristiti odgovarajući put do datoteke mysql.server (npr. /usr/local/bin/mysql.server ).

  1.  Ako gornja naredba ne radi, pokušajte ponovno pokrenuti sudo service mysql(sudo service mysql restart ) .

  1. Da biste ponovno pokrenuli MySQL u sustavu Windows(Windows) , otvorite novi prozor PowerShell tako da desnom tipkom miša kliknete izbornik (PowerShell)Start i odaberete Windows PowerShell (Admin) . U prozoru PowerShell upišite net stop mysql80 nakon čega slijedi net start mysql80 , zamjenjujući mysql80 ispravnim nazivom usluge na vašem računalu.

Ako niste sigurni u točan naziv usluge u sustavu Windows(Windows) , upišite net start da biste je pronašli. Ako ne možete ponovno učitati svoju konfiguraciju, ponovno pokrenite poslužitelj i umjesto toga ručno učitajte MySQL (ako je potrebno).(MySQL)

Konfiguriranje vaših vatrozida(Configuring Your Firewalls)

U ovoj fazi, vaša MySQL baza podataka trebala bi dopustiti udaljene veze s uređaja koji koriste IP adresu koju ste postavili kao vrijednost bind-address u svojoj konfiguracijskoj datoteci MySQL (ili sa svih uređaja ako ovu vrijednost postavite na 0.0.0.0 ). No, veze će i dalje biti blokirane od strane vašeg uređaja ili mrežnog vatrozida(device or network firewall) .

Većina poslužitelja i računala koristi vatrozid za blokiranje veza osim ako se odobri pristup određenom portu. Koraci za ovo konfiguriranje će se razlikovati, ovisno o tome koristite li MySQL u sustavu Windows(Windows) ili Linux . Vatrozidi za Mac(Mac) su onemogućeni prema zadanim postavkama, tako da ovdje ne biste trebali dovršiti nikakve dodatne korake.

Konfigurirajte Linux vatrozide(Configure Linux Firewalls)

Mnogi Linux poslužitelji koriste iptables kao zadani uslužni program vatrozida. Možete ga konfigurirati slijedeći korake u nastavku.

  1. Otvorite terminal ili SSH vezu i upišite sudo iptables -A INPUT -p tcp -s XXXX –dport YYYY -j ACCEPT . Zamijenite XXXX IP adresom uređaja s kojeg želite dopustiti MySQL veze i zamijenite YYYY odgovarajućom vrijednošću porta iz vaše MySQL (from)konfiguracijske(MySQL) datoteke (npr. 3306 ).

  1. Ovo će privremeno konfigurirati vatrozid. Ako koristite Linux poslužitelj baziran na Debianu ili Ubuntuu, učinite ovu promjenu trajnom upisivanjem sudo netfilter-persistent save i sudo netfilter-persistent reload u terminal ili SSH prozor.

Ako iptables nije zadani alat vatrozida za vašu distribuciju Linuxa(Linux) , morat ćete pogledati korisnički priručnik svoje distribucije za više informacija. Ako su određeni paketi (kao što je netfilter-persistent ) nedostupni, upotrijebite alat za skladištenje softvera vaše distribucije da ih instalirate (npr. sudo apt install netfilter-persistent ).

Konfigurirajte Windows vatrozide(Configure Windows Firewalls)

Ako za smještaj baze podataka koristite računalo ili poslužitelj sa sustavom Windows, svoj vatrozid možete konfigurirati pomoću ovih koraka:

  1. Desnom tipkom miša kliknite(Right-click) izbornik Start i odaberite Pokreni(Run) .

  1. U okvir Pokreni(Run) upišite wf.msc i odaberite U redu(OK) .

  1. U prozoru Windows Defendera(Windows Defender) odaberite Ulazna pravila(Inbound Rules ) > Novo pravilo(New Rule) .

  1. U prozoru čarobnjaka za nova ulazna pravila(New Inbound Rule Wizard) odaberite Port > Sljedeće(Next) .

  1. Na sljedećem izborniku odaberite TCP među opcijama, upišite 3306 (ili bilo koju vrijednost porta koja je navedena u vašoj MySQL konfiguracijskoj datoteci), a zatim odaberite Sljedeće(Next) .

  1. Na izborniku Radnja(Action) ostavite zadanu opciju na Dopusti omogućenu vezu(Allow the connection) , a zatim odaberite Sljedeće(Next) .

  1. Potvrdite da želite da se pravilo primjenjuje na sve vrste mreža, a zatim odaberite Sljedeće(Next)

  1. Upišite opisni naziv za pravilo (npr. MySQL ) u navedeni priključak, a zatim odaberite Završi(Finish) da biste ga dodali na popis pravila vatrozida.

Ako imate problema s povezivanjem, ponovite gore navedene korake, pazeći da stvorite novo odlazno pravilo(outbound rule ) u postavkama vatrozida koristeći iste detalje (port 3306, itd.). Možda ćete također morati konfigurirati usmjerivač lokalne mreže da otvori potrebne blokirane portove(open the necessary blocked ports) kako bi omogućio ulazne i odlazne veze s vašom bazom podataka. 

Povezivanje na udaljeni poslužitelj pomoću MySQL-a(Connecting to a Remote Server Using MySQL)

Nakon što konfigurirate svoju MySQL bazu podataka da omogući udaljene veze, morat ćete zapravo uspostaviti vezu s njom. To možete učiniti pomoću naredbe mysql ( mysql.exe na Windowsima(Windows) ) iz terminala ili prozora PowerShell .

Ako koristite Windows , morat ćete provjeriti je li MySQL instaliran lokalno(MySQL is installed locally) prije nego što počnete. Korisnici Maca(Mac) mogu instalirati MySQL koristeći homebrew(using homebrew) s terminala ( brew install mysql ), dok korisnici Linuxa(Linux) mogu koristiti svoje lokalno spremište aplikacija (npr. sudo apt install mysql ) za instalaciju potrebnih paketa.

Povezivanje na MySQL na Linuxu ili Macu(Connecting to MySQL on Linux or Mac)

  1. Za povezivanje s vašim udaljenim MySQL poslužiteljem na Macu(Mac) ili Linuxu(Linux) otvorite novi prozor terminala i upišite mysql -u korisničko ime -h XXXX:XXXX -p(mysql -u username -h X.X.X.X:XXXX -p) . Zamijenite XXXX:XXXX IP adresom udaljenog poslužitelja i brojem porta (npr. 100.200.100.200:3306 ) i korisničkim imenom(username) svojim MySQL korisničkim imenom.

  1. Kada se to od vas zatraži, potvrdite svoju lozinku. Ako je veza uspješna, na terminalu će se pojaviti poruka o uspjehu.

Povezivanje na MySQL na Windowsima(Connecting to MySQL on Windows)

  1. Za povezivanje s udaljenim MySQL poslužiteljem u sustavu Windows(Windows) otvorite novi prozor PowerShell tako da desnom tipkom miša kliknete izbornik (PowerShell)Start i odaberete Windows PowerShell (Admin) .

  1. U novom prozoru PowerShell upišite cd “C:\Program Files\MySQL\MySQL Workbench 8.0\ ” da biste unijeli ispravnu mapu, zamjenjujući ovaj direktorij ispravnim instalacijskim direktorijem na vašem računalu. Na primjer, ako je vaša verzija MySQL - a 8.0.1, umjesto toga upotrijebite mapu MySQL Workbench 8.0.1 .

  1. Odatle upišite .\mysql.exe -u username -h X.X.X.X:XXXX -p . Zamijenite XXXX:XXXX IP adresom udaljenog poslužitelja i brojem porta (npr. 100.200.100.200:3306 ) i korisničkim imenom(username) MySQL korisničkim(MySQL) imenom koje omogućuje daljinski pristup (kao što je root ). Slijedite(Follow) sve dodatne upute na zaslonu.
  2. Navedite svoju lozinku, kada se to od vas zatraži, kako biste dovršili postupak prijave i daljinski pristupili vašoj MySQL bazi podataka.(MySQL)

Ako to ne uspije, povežite se s poslužiteljem ili računalom na kojem se nalazi vaš MySQL poslužitelj koristeći SSH (ili mu pristupite izravno) koristeći ove korake i koristeći argument -h localhost . Zatim možete stvoriti odgovarajući korisnički račun slijedeći korake u nastavku.

Dopuštanje udaljenog korisničkog pristupa MySQL bazi podataka(Allowing Remote User Access to a MySQL Database)

Do ovog trenutka trebali biste se moći spojiti na svoj MySQL poslužitelj na daljinu koristeći korijenski korisnički račun vašeg poslužitelja ili drugi korisnički račun s povišenim privilegijama. Budući da ova razina pristupa nije sigurna, možda ćete radije stvoriti ograničeniji račun za pristup vašoj MySQL bazi podataka.

Ovaj račun će imati ograničen pristup vašem MySQL poslužitelju, dopuštajući mu interakciju samo s odabranim bazama podataka. Neće moći napraviti ozbiljnije promjene, kao što je pristup drugim podacima baze podataka, stvaranje novih korisničkih računa itd. 

Morat ćete imati mogućnost daljinske prijave na svoj MySQL poslužitelj. Ako ne možete daljinski koristiti svoj root račun, morat ćete pristupiti ljusci poslužitelja pomoću naredbe mysql putem udaljene SSH veze ili izravnim pristupom računalu ili poslužitelju koji hostira poslužitelj.

  1. U vašoj udaljenoj MySQL ljusci (pomoću mysql alata), upišite CREATE USER “username”@”x.x.x.x” IDENTIFIED BY “password”; i odaberite Enter . Zamijenite korisničko ime(username ) korisničkim imenom koje želite stvoriti, xxxx IP adresom s koje se želite povezati, a lozinku(password) odgovarajućom lozinkom.

  1. Morat ćete dodijeliti svom novom računu potrebna dopuštenja. Da biste to učinili, upišite GRANT ALL ON databasename.* TO username@”x.x.x.x”; i zamijenite naziv baze podataka, korisničko ime(databasename, username, ) i xxxx  ispravnim pojedinostima. Ako želite, zamijenite naziv baze podataka(databasename) sa * da biste joj omogućili pristup svim bazama podataka. 

Uz odobreni pristup, koristite korake u gornjem odjeljku za daljinsko povezivanje sa svojim poslužiteljem koristeći svoj novi račun (npr. mysql -u korisničko ime -h XXXX:XXXX -p(mysql -u username -h X.X.X.X:XXXX -p) ).

Osiguravanje podataka vaše baze podataka(Securing Your Database Data)

Bez obzira radite li s MySQL -om ili drugom vrstom SQL baze podataka, važno je održavati svoje veze sigurnima kako biste održali sigurnost podataka. Dobar način za to je generiranje SSH ključeva za daljinski pristup(generate SSH keys for remote access) vašem poslužitelju, umjesto oslanjanja na zastarjele (i lako pogodne) lozinke.

Ako ste zabrinuti zbog gubitka podataka, lako možete napraviti sigurnosnu kopiju baze podataka(back up your database) na mreži. Većina baza podataka se pokreće pomoću Linux poslužitelja—možete jednostavno automatizirati sigurnosnu kopiju Linux datoteka(automate a Linux file backup easily) . Ako koristite MySQL u sustavu Windows(Windows) , možete postaviti sličan sustav automatskog sigurnosnog kopiranja za Windows(automatic backup system for Windows) , koji vam omogućuje vraćanje podataka u hitnim slučajevima.



About the author

Ja sam web programer s više od 10 godina iskustva u radu s preglednicima Firefox i Google Docs. Stručnjak sam za izradu jednostavnih, ali moćnih mrežnih aplikacija i razvio sam web rješenja za mala poduzeća i velike organizacije. Moja baza klijenata uključuje neka od najvećih imena u poslovanju, uključujući FedEx, Coca Colu i Macy's. Moje vještine programera čine me idealnim kandidatom za bilo koji projekt koji treba brzo i učinkovito dovršiti - od razvoja prilagođenih web stranica do stvaranja robusnih marketinških kampanja putem e-pošte.



Related posts