Skocz do zawartości

[mysql] Połaczenie z bazą za routerem z zewnątrz


burzam

Rekomendowane odpowiedzi

Witam

mam nastepujacy problem:

w malej sieci mamy:

- router pelniacy funkcje bramy, firewalla - przyznane na nim statycznie adresy ip

- serwer postawiony na linuxie -suse.9.3 - a na nim serwer apache, mysql, ftp, postfix

Przekierowalem na routerze nasze zewnetrzne ip i port 80 na serwer apache znajdujacy sie na serwerze linuxowym - to dziala.

Ale nie potrafie w ten sam sposob przekirowac polaczenia bazy danych - w ogole nie wiem czy podobne przekierowanie jest mozliwe:

chodzi o dostep z zewnatrz do bazy danych znajdujacej sie na linuxowym serwerze.

Router ma ustawione przekierowanie portu 3306 na ip wewnetrzne serwera - 192.168.1.118

w konsoli linuxa telnet ip_zewnetrzne 80 - laczy sie prawidlowo

natomiast telnet ip_zewnetrzne 3306 ni cholery

Skonfigurowalem plik my.cnf i tam jako bind-address ustawilalem dla prob ip serwera linuxowego i nasze ip zewnetrzne - przy roznych kombinacjach nadal polaczenie php zwraca mi : cannot connect to adres 'ip_zewnetrzne'

Siedze nad tym 2 dzien i juz nie mam pomyslow,

moze ktos wie jak mi pomoc ?

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Router ma ustawione przekierowanie portu 3306 na ip wewnetrzne serwera - 192.168.1.118

Rozumien, ze ip_router:3306 -> 192.168.1.118:3306 !?

wiec tak:

1. w my.cnf zostaw bind 127.0.0.1 (localhost) ,

2. sprawdz czy z bazą moze sie łączyc klient zewnetrzny i czy ma uprawnienia do polaczen. Na poczatku mozesz ustawic polaczenia dla wszyskich zewnetrznych (%)

jesli to nie zadziala:

1. znajdz jaki port w linux jest otwarty (nie jest blokowany)

2. ustaw ten port w my.cnf w sekcji [client] - oryginalnie jets tam 3306

3. na routerze przekieruj na ten wlasnie port.

4. pamietaj by do bazy mial dostep klient zewnetrzny nie tylko lokalny (ja takie ustawienia sprawdzam w phpmyadmin)

na razie tyle z pomyslow...

[edyta]

w nowszych wersjach PHP polecenie _connect() umozliwia za podaniem nazwy hosta podanie portu na jakim ma sie łączyć, może wymuś 3306 !? czyli zakladam ze to bedize mialo postac IP:3306

Odnośnik do komentarza
Udostępnij na innych stronach

dzieki za pomoc i teraz tak :

1. w my.cnf zostaw bind 127.0.0.1 (localhost) ,

2. sprawdz czy z bazą moze sie łączyc klient zewnetrzny i czy ma uprawnienia do polaczen. Na poczatku mozesz ustawic polaczenia dla wszyskich zewnetrznych (%)

to nie zadzialalo juz wczesniej, probowalem tej i wielu kombinacji

1. znajdz jaki port w linux jest otwarty (nie jest blokowany)

2. ustaw ten port w my.cnf w sekcji [client] - oryginalnie jets tam 3306

3. na routerze przekieruj na ten wlasnie port.

i to jest jakis pomysl, poprobuje i zobacze co z tego wyjdzie

4. pamietaj by do bazy mial dostep klient zewnetrzny nie tylko lokalny (ja takie ustawienia sprawdzam w phpmyadmin)

to odpoczatku bylo ustawione prawidlowo

w nowszych wersjach PHP polecenie _connect() umozliwia za podaniem nazwy hosta podanie portu na jakim ma sie łączyć, może wymuś 3306 !? czyli zakladam ze to bedize mialo postac IP:3306

tak tak - z takiego polaczenia korzystam

ogolny problem to brak polaczenia z baza danych - modle sie o to zeby mi nie autoryzowalo uzytkownikow np - bo to mozna latwo zrobic - ale nie chce mi w ogole laczyc z baza po porcie 3306 - port 80 i polaczenie http dziala bez zarzutow na zewnatrz

dam znac o wynikach prob

pozdrawiam i dziekuje

Odnośnik do komentarza
Udostępnij na innych stronach

No cóż, nowości nie napisałem... ale i mam kolejny pomysł.

Wystaw tego linucha w strefie zdemilitaryzowanej (calego) moze wtedy cos pomoze...

Z drugiej strony, zastanawiam sie czy to aby nie jakis problem z samym mysql. Mialem i u siebie takie problemy, z tym, ze objawialo sie to dosc dziwnie:

po postawieniu myskl okazalo sie , ze bez zadnych przeszkod łączyłem się z bazą po localhost i bylo ok, natomiast za czorta nie moglem sie polaczyc z zewnątrz, by było zabawniej (bez zadnych zmian w oprogramowaniu, konfiguracji) mniej wiecej co 30ty restart calego kompa NAGLE moglem sie juz bez problemow łączyć, ale wystarczyło wyłączyć mysql i po ponownym włączeniu problem wrtacał... czyżby jakiś błąd w mysql ?

Zobacz jaką masz wersję, poczytaj o niej, może warto ciut starsza, moze ciut młodszą...

Powoli si ekoncza pomysly... z miłą chęcią usłyszę co udało się w tym kierunku zrobić...

Aha... a mozesz w sieci lan łączyć sie z tym serwerem czy tez nie !? Wtedy byloby wiadomo czy to router czy mysql... Czyli postaw sobie apache na jakims win i sprawdz czy sie połączy.. nie rob tego na tym samym, bo oczywiscie wtedy po localhost bedzie szlo, a chodzi o to by zobaczyc czy to problem w samym routrze czy z mysql...

Troche haotycznie ale mam nadzieje, ze si epołapiesz. :)

p.s. bind w my.cfg (my.ini) powinien byc na localhost (127.0.0.1) a baza miec nadane prawa do polaczen z zewnatrz dlatego gdzies wczesniej podalem bind localhost...

Odnośnik do komentarza
Udostępnij na innych stronach

a nie nie :)

po localhoscie wszystko smiga, lacze sie z roznych stacji - w koncu system crm stoi na apachu i mysql wlasnie na tym serwerze linuxowym i dziala w sieci - dla firmy

jednak chce te zamowienia dodawac z zewnatrz

http dziala - i nawet sam crm korzystajacy z lokalnej bazy dziala na zewnatrz - ale jest to przekierowanie po porcie 80 na localny ip linuxa

no i wlasnie nie wiem w czym problem

chyba nie w mysql - konfiguracja jest dobra

a blad polaczenia : nie moze znalezc adresu bazy danych "ip_zewnetrzne:3306"

i klops...

Odnośnik do komentarza
Udostępnij na innych stronach

a nie nie ;)

po localhoscie wszystko smiga, lacze sie z roznych stacji...

czyli mysql poprawnie dziala przy polaczeniach w LAN'ie (dostaja sie do bazy) co oznacza, ze problem jest w router'ze...

1. Moze warto dla testow wystawic ten serwer w strefie zdemilitaryzowanej. !? (ewentualnie tzreba by zrobic 'dziure' w tym porcie - 3306) bo taki port jest odpytywany po stronie WAN

2. Nie bedac na miejscu nie wiem... ale moze to routowanie jest zle wykonane!? Z tego co pamietam, powinienes to przekierowac IP_WAN:port -> IP_LAN:port

...chyba nie w mysql - konfiguracja jest dobra

a blad polaczenia : nie moze znalezc adresu bazy danych "ip_zewnetrzne:3306"  

czyli nie wystawione...

A co to za router ? Marka - model !? Moze firewall blokuje !? W niektorych routerac poza takim przekierowaniem trzeba jeszcze 'odblokowac' port...

Odnośnik do komentarza
Udostępnij na innych stronach

router to LINKSYS WRT54G

przekierowania portow i ip`kow sa na nim dobrze zrobione

(jeszcze raz zaznaczam ze http chodzi bez zarzutow z zewnatrz)

ale masz racje, ze moze byc to blokada portu 3306 na zewnatrz - niestety router ma hardware`owy firewall ktory ciezko skonfigurowac - w ogole nie ma czegos takiego jak wylaczanie blokady wybranych portow - LIPA

Generalnie znalazlem inny sposob na importowanie danych z kilku roznych serwerow z sieci :

- dogadalem sie z kazdym z providerow - pozwolili mi na polaczenie z baza danych spod mojego ipka - czyli bede mogl odczytac baze poszczegolnych sklepow - oczywiscie nie naduzywajac ilosci polaczen na sekunde

- wlasnie pisze skrypt importujacy dane z tych wszystkich serwerow i wsadzajacy je do naszej bazy na localhoscie

i jak okazuje sie, to jest najlepsze rozwiazanie - gdybysmy zamowienia wsadzali do swojej bazy - w razie awarii lacza (tepsa) - zadne z zamowien by do nas nie dotarlo - w przypadku mojego rozwiazania - zamowienia te zostana przyjete przez poszczegolne serwery a my je importujemy kiedy chcemy - czyli np po naprawie awarii lacza

w ogole ta sprawa sprawila mi wiele problemow - siec sklepow internetowych musi miec sklepy na innych ipkach - zeby sie lepiej pozycjonowac - inne ipki = inny serwer

inny serwer = problemy z unifikacja zamowien

w kazdym razie dzieki za pomoc - podpowiedziales mi pare fajnych rzeczy ktore na pewno wykorzystam do innych projektow

pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

Cieszę się, że znalazłeś rozwiązanie i z tego c czytam to nawet nieźle będzie to funkcjonowało (niezależność baz z zamówieniami od głównej bazy).

Nie wiem tylko w czym pomogłem... odnosze wrazenie , ze zaledwie deptałm Tobie po pietach a Ty i tak szedłeś przodem (niestety nie znałem potrzeb).

Co do polskiego hostingu - niestety nie nadaje sie on o profesjonalnych zastosowan bazodanowych, tu musisz uwazac... jeden oszołom pisze: ILOSC I WIELKOSC BAZ BEZ OGRANICZEN inny pisze maila, ze Twoj skrypt obciaza PROCESOR i ze zablokuje Tobie konto.. Odnosze wrazenie ze wiekszosc naszych polskich firm hostingowych przygotowuja miejsce na wizytowke w html i na niewiele wiecej... wiec ostroznie przy powaznych projektach (szczegolnie jesli ilosc zapytan do mysql bedzie spora).

Powodzenia.

Odnośnik do komentarza
Udostępnij na innych stronach

to jeszcze pare slow odnosnie hostingu w Polsce

zgadzam sie jak najbardziej z przedmowca

to czego najbardziej nienawidze w mojej pracy, to gdy wchodzimy na nowy serwer/host - ma on zupelnie inne ustawienia niz poprzednie nasze

dzwonie do admina, z prosba zeby zdjal mi np "safe mode" bo moj skrypt nie moze sie wykonywac

co slysze ?

ze to problem, a po co, jakies glupoty

tlumacze mu, na innych serwerach nie mamy takich problemow, a on marudzi, po czym zdejmuje

i to tylko przyklad

ile ja sie musialem nauzerac z administratorami, a moze nawet z pseudoadministratorami... szok

marzy mi sie profesjonalny hosting... placisz i wymagasz

a nie placisz i Ci marudza...

pozdro, mysle ze ten temat mozna juz zamknac

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności