Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL]Dostęp z zewnątrz do bazy mysql
Forum PHP.pl > Forum > Bazy danych > MySQL
dopal
Witam,
Posiadam w lokalnej sieci na komputerze z win7 zainstalowany webserv (apache 2.2.22. php 5.3.20, Mysql 5.5.21), na którym działa aplikacja w sieci lokalnej.
Chciałbym z tego lokalnego serwera pobierać dane z bazy mysql by były widoczne na stronie www. Strona znajduje się na serwerze w firmie w której mamy wykupiony hosting.
Co muszę zrobić, ustawić, skonfigurować by takie połączenie było możliwe?
Wujek google podpowiada, że da się to zrobić, przejrzałem kilka stron, ale w wiekszości dotyczyły one linuxa, a nie windowsa.
Podawany był tam taki zapis:
" Po zalogowaniu na konto z pełnymi uprawnieniami otwieramy plik konfiguracyjny serwera MySQL:

nano /etc/mysql/my.cnf

W plik szukamy linii:

bind-address = 127.0.0.1

Należy ją usunąć lub dodać płotek (hash) - stworzyć z tej linii komentarz:

#bind-address = 127.0.0.1

Kolejnym krokiem, który należy wykonać jest restart serwera MySQL:

/etc/init.d/mysql restart"

ale niestety pod win w pliku my.ini nie znajduję takiej lini.

Proszę o konkretną pomoc.
viking
Na początek sprawdź opcję skip-networking, później nadaj uprawnienia użytkownikowi.
dopal
Cytat(viking @ 31.05.2016, 15:03:14 ) *
Na początek sprawdź opcję skip-networking, później nadaj uprawnienia użytkownikowi.


Mam tak:

#skip-networking
viking
Dodałeś użytkownika z dostępem? Reguły na firewallu? bind-address?
dopal
Cytat(viking @ 31.05.2016, 15:22:47 ) *
Dodałeś użytkownika z dostępem? Reguły na firewallu? bind-address?

Użytkownika z uprawnieniami dodałem.
Jaka reguła ma być na firewallu? i jaki ma byc bind-address? Czy to adres lokalny czy strony www?
A czy to ma znaczenie że to windows a nie linux jak wspominałem w pierwszym poście?
viking
Nie ma żadnego znaczenia. Konfiguracja jest dokładnie ta sama. bindujesz adres maszyny na której ten serwer stoi. Firewall ma przepuszczać przychodzące połączenia do portu 3306 (domyślnie)
dopal
Cytat(viking @ 1.06.2016, 10:49:24 ) *
Nie ma żadnego znaczenia. Konfiguracja jest dokładnie ta sama. bindujesz adres maszyny na której ten serwer stoi. Firewall ma przepuszczać przychodzące połączenia do portu 3306 (domyślnie)

ok powinno byc ustawione. co dalej?
viking
Powinno czy jest? Utworzyć połączenie i korzystać.
dopal
Cytat(viking @ 1.06.2016, 11:05:14 ) *
Powinno czy jest? Utworzyć połączenie i korzystać.

Powinno w sensie, że nie wiem czy prawidłowo wszystko zrobiłem smile.gif
Czyli teraz już na serwerze www, utworzyć połączenie i sprobować pobrać dane?
viking
Bez tego się raczej nie dowiesz czy działa.
dopal
Cytat(viking @ 1.06.2016, 11:13:11 ) *
Bez tego się raczej nie dowiesz czy działa.


Dostaję taki komunikat:

Warning: mysql_connect() [function.mysql-connect]: Can't connect to MySQL server on '83.16.XX.XXX' (4) in /usr/local/apache/www/htdocs/tu wpisany jest adres strony www/gen/class.SQL.php on line 14
Can't connect to MySQL server on '83.16.XX.XXX' (4)
dopal
I jestem w czarnej d....
Nie działa sad.gif
viking
Restartowałeś mysql po zmianach?
W jaki sposób był instalowany? Uruchom ponownie narzędzi konfiguracji.
I głupie pytanie. Usługa jest uruchomiona?
dopal
Cytat(viking @ 1.06.2016, 11:50:05 ) *
Restartowałeś mysql po zmianach?
W jaki sposób był instalowany? Uruchom ponownie narzędzi konfiguracji.
I głupie pytanie. Usługa jest uruchomiona?


Tak restartowałem. Usługa działa, bo ludzie pracują na programie bez problemu w sieci lokalnej.
Instalowałem to z pakietu Webserv, czyli wszystko było w jednym zestawie tak jak np. w Krasnalu
Pewnie coś nie tak ustawiłem:

Lokalny serwer na adres powiedzmy 1.1.1.100
w pliku my.ini
są te zapisy

#skip-networking

#bind-address = 1.1.1.100 ( probowałem też ze 127.0.0.1 )

Użytkownik ma poprawne ustawienia ponieważ w sieci lokalnej działa tak jak należy.

Problem więc musi leżeć gdzieś dalej.

Firewall jest postawiony na OpenBSD.

Na serwerze www w utworzeniu połączenia mam takie zapisy :
  1. <?php
  2.  
  3. class SQL {
  4.  
  5. private $host = '83.16.XX.XXX'; adres zewnętrzny na którym jest mysql
  6. private $user = 'darek'; przykładowy uzytkowik
  7. private $password = 'darek1'; przykłądowe hasło
  8. private $database = 'dzj'; przykładowa baza
  9.  
  10. public $query;
  11.  
  12. public function connection(){
  13.  
  14. $connect = mysql_connect( $this->host, $this->user, $this->password) or die( mysql_error());
  15.  
  16. $database = mysql_select_db( $this->database);
  17.  
  18. $charset = mysql_query("SET NAMES 'utf8'");
  19.  
  20.  
  21. }
  22.  
  23. public function disconnection(){
  24.  
  25. mysql_close( $connect);
  26.  
  27. }
  28.  
  29. public function query( $query){
  30.  
  31. return $this->query = mysql_query( $query);
  32.  
  33. }
  34.  
  35. public function getRows(){
  36.  
  37. return mysql_num_rows( $this->query);
  38.  
  39. }
  40.  
  41. }
  42.  
  43. ?>
  44.  
viking
# oznacza komentarz. Możesz tam wpisywać x głupot i to dalej będzie niewidoczne. Maszyna jest na windows więc dotyczy ją firewall win. Jeśli są po drodze jakieś inne albo routing sieciowy inaczej ustawiony / firewalle obce, to już w twojej gestii jest to sprawdzić. Funkcje mysql_* zostały usunięte z PHP 7, nie używaj tego.
dopal
jak usunałem # i restartuje serwer to wyskakują błędy i serwer zostaje zatrzymany
viking
Czekaj.


Nie jednak dzisiaj kula jakieś głupoty pokazuje.

Ale tak szczerze. Z takim poziomem wiedzy chcesz udostępnić serwer firmowy, być może z ważnymi danymi, na zewnątrz? Nie obraź się ale to poważna głupota.
dopal
Cytat(viking @ 1.06.2016, 12:54:57 ) *
Czekaj.


Nie jednak dzisiaj kula jakieś głupoty pokazuje.

Ale tak szczerze. Z takim poziomem wiedzy chcesz udostępnić serwer firmowy, być może z ważnymi danymi, na zewnątrz? Nie obraź się ale to poważna głupota.

smile.gif
Akurat te dane i tak są udostępniane...tylko, że trzeba je dwa razy wpisywać. Raz lokalnie w sieci, a drugi raz na www.
Nie obrażam się i mam świadomość zagrożeń, nie wszystko człowiek wie. Inna sprawa gdyby ta sieć lokalna była dobrze zrobiona, ale tu niestety wszystko działa jako prowizorka.
A człowiek chciałby sie czegoś nauczyć nowego smile.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.