Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Połączenie z bazą danych
Bondar91
post 7.05.2019, 14:54:30
Post #1





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 16.01.2014

Ostrzeżenie: (0%)
-----


Witam,
mam pytanko, istnieje szansa dostania się w jakikolwiek sposób do bazy danych jeżeli posiadam dane:
user
password
database_name

Baza danych znajduję się na serwerze do którego nie mam dostępu, oraz nie mam dostepu do phpmyadmina.
Z góry dziękuję za pomoc smile.gif

Ten post edytował Bondar91 7.05.2019, 14:56:11
Go to the top of the page
+Quote Post
Pyton_000
post 7.05.2019, 14:59:44
Post #2





Grupa: Zarejestrowani
Postów: 7 799
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


https://www.adminer.org/pl/ ale musisz mieć do kompletu host
Go to the top of the page
+Quote Post
Bondar91
post 7.05.2019, 15:30:57
Post #3





Grupa: Zarejestrowani
Postów: 99
Pomógł: 0
Dołączył: 16.01.2014

Ostrzeżenie: (0%)
-----


Ok dzięki za podpowiedź smile.gif
Go to the top of the page
+Quote Post
nospor
post 7.05.2019, 15:40:09
Post #4





Grupa: Moderatorzy
Postów: 34 643
Pomógł: 5752
Dołączył: 27.12.2004




wybaczcie moja konsternacje ale jak sam autor wspomnial nie ma dostepu do phpmyadmin ale nagle bedzie mial dostep do zupelnie nowego programu tj adminer? Cos przeoczylem?


--------------------

Najlepsze kawałki programistyczne || Dowcipy o informatykach || Forum PHP dla opornych
Klasy: Pager (stronicowanie) | Cache | ShoutBox (Chat) | Widok | Ładne url'e

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Pyton_000
post 7.05.2019, 17:17:13
Post #5





Grupa: Zarejestrowani
Postów: 7 799
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Nie wnikaj biggrin.gif Im mniej wiesz tym dłużej żyjesz tongue.gif
Go to the top of the page
+Quote Post
kastore
post 4.07.2019, 20:47:08
Post #6





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.07.2019

Ostrzeżenie: (0%)
-----


Witam
Nie chciałem tworzyć nowego tematu, bo moje pytanie obejmuje problemy z połączeniem z bazą danych.
Jestem "opiekunem" bardzo rozbudowanej i zagmatwanej aplikacji webowej. Aplikacja napisana głównie w PHP 5.5, ale jest tam w zasadzie wszystko.
Nagle po nie wiem jakim czasie admin sewera zgłosił się do mnie , że proces mysqld na serwerze przekracza 100% zajętości procesora
Nigdy się to nie zdarzało, zwykle szczytowo raz dziennie jest to okoł 25%
Zespół MySQL zaczął analizować ewentualne powody i wyszło między , że aplikacja nie zamyka połączeń z bazą danych, co gorsza, otwoera cały czas nowe.
Jak można by było kontrolować przed otwarciem nowego połączenia czy już takie nie jest otwarte?
Znalazłem także coś takiego
  1. $conn = mysql_pconnect($host,$user,$password)


Wiem, że ta funkcja jest deprecated, ale ta aplikacja jest napisana pod PHP 5.5, także czy można coś takiego używać.
Go to the top of the page
+Quote Post
Neutral
post 4.07.2019, 22:51:20
Post #7





Grupa: Zarejestrowani
Postów: 233
Pomógł: 35
Dołączył: 10.01.2016

Ostrzeżenie: (0%)
-----


To tylko przykład, ponieważ przejrzałem pobieżnie dokumentację, itp., więc nie sugeruj się tym rozwiązaniem aż tak. Możliwe, że jest lepsze rozwiązanie, ale na tę chwilę jakoś nie specjalnie znalazłem.

  1. <?php
  2.  
  3. $mysqli = new mysqli('localhost', 'root', 'mystrongpass', 'forumphp');
  4. $mysqli2 = new mysqli('localhost', 'root', 'mystrongpass', 'forumphp');
  5. $mysqli3 = new mysqli('localhost', 'root', 'mystrongpass', 'forumphp');
  6. $mysqli4 = new mysqli('localhost', 'root', 'mystrongpass', 'forumphp');
  7.  
  8. $connections = [$mysqli, $mysqli2, $mysqli3, $mysqli4];
  9.  
  10. $which_connect_true = 2;
  11.  
  12. for($i=0;$i<sizeof($connections);$i++) {
  13.  
  14. if($i != $which_connect_true && is_int($connections[$i]->thread_id)) {
  15. $connections[$i]->kill($connections[$i]->thread_id);
  16. $connections[$i]->close();
  17. }
  18.  
  19. }
  20. sleep(2);
  21. var_dump($connections[$which_connect_true]->stat());
  22.  
  23. $query = $mysqli3->query('show processlist;');
  24.  
  25.  
  26. while($res = $query->fetch_assoc()) {
  27. var_dump($res);
  28. }
  29.  
  30. $connections[$which_connect_true]->close();
  31.  
  32. ?>


https://alvinalexander.com/blog/post/mysql/...nnections-mysql

Ten post edytował Neutral 4.07.2019, 23:12:28
Go to the top of the page
+Quote Post
redeemer
post 5.07.2019, 08:34:10
Post #8





Grupa: Zarejestrowani
Postów: 915
Pomógł: 210
Dołączył: 8.09.2009
Skąd: Tomaszów Lubelski/Wrocław

Ostrzeżenie: (0%)
-----


Cytat(kastore @ 4.07.2019, 20:47:08 ) *
Witam
Nie chciałem tworzyć nowego tematu, bo moje pytanie obejmuje problemy z połączeniem z bazą danych.
Jestem "opiekunem" bardzo rozbudowanej i zagmatwanej aplikacji webowej. Aplikacja napisana głównie w PHP 5.5, ale jest tam w zasadzie wszystko.
Nagle po nie wiem jakim czasie admin sewera zgłosił się do mnie , że proces mysqld na serwerze przekracza 100% zajętości procesora
Nigdy się to nie zdarzało, zwykle szczytowo raz dziennie jest to okoł 25%
Zespół MySQL zaczął analizować ewentualne powody i wyszło między , że aplikacja nie zamyka połączeń z bazą danych, co gorsza, otwoera cały czas nowe.
Jak można by było kontrolować przed otwarciem nowego połączenia czy już takie nie jest otwarte?
Znalazłem także coś takiego
  1. $conn = mysql_pconnect($host,$user,$password)


Wiem, że ta funkcja jest deprecated, ale ta aplikacja jest napisana pod PHP 5.5, także czy można coś takiego używać.

Nie trzyma się to kupy. Wiszące połączenia nie powinny powodować obciążenia procesora, co najwyżej wysyci się ilość możliwych połączeń i aplikacja przy kolejnym połączeniu dostanie błąd: "Too many connections" (poza tym baza sama zamyka nieaktywne połączenia po jakimś czasie w zależności od ustawienia konfiguracji). Stawiam bardziej na to, że jakieś zapytanie/zapytania zajeżdża bazę i wykonuje się bardzo długo (klient może zamknąć stronę, ale zapytanie w bazie i tak będzie się dalej wykonywać - połączenie będzie wisieć dopóki się nie skończy).

Polecam sprawdzić slowlog, albo
Kod
show full processlist
kiedy jest obciążona - wtedy zobaczysz które zapytania zajeżdzają bazę. Póżniej explain na tych zapytaniach i będzie wiadomo dlaczego tak się dzieje.

Ten post edytował redeemer 5.07.2019, 08:35:32


--------------------
Go to the top of the page
+Quote Post
kastore
post 8.07.2019, 14:25:24
Post #9





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 4.07.2019

Ostrzeżenie: (0%)
-----


Problem w tym, że ja jestem developerem, a nie MySQL specialist z firmy i wiem tyle ile mi powie. Sprawdzałem FULL PROCESS LIST i było może z 6 zapytań, które nie wyglądały groźnie.
Na razie temat zakończył się tym, że admin serwera zgodził się na zwiększenie procków z 2 do 4 i problem niby zniknął.
A ja znalazłem miejsce gdzie mogłem zrobić zakończenie połączenia mysql_close, choć nie przekonuje mnie to co mi mówił administrator mysqla.
Coś tam spiepszyli podczas ostatniego upgradu i nie chcą sie przyznać. Szkoda, że nie zaproponowałem zamknięcia apacha i sprawdzenia jak zachowuje sie proces bazy danych.
Go to the top of the page
+Quote Post
Pyton_000
post 11.07.2019, 21:35:26
Post #10





Grupa: Zarejestrowani
Postów: 7 799
Pomógł: 1373
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


Czyli de facto nic nie zrobiono. Jedynie co to odwleczono w czasie zawał pacjenta.

Tak jak @redeemer wspomniał odpalić show full processlist i zobaczyć co i jak długo wisi.
Poza tym Adminteż dupa bo sam mógł zerknąc co tak mieli. Skoro widział że to MySQL to sam mógł zerknąć co jest przyczyną. No chyba że ma płacone za h supportu i ma wywalone na to, ale niestety bez nieho cięzko będzie debugować.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 23.07.2019 - 02:21