Drukowana wersja tematu

Kliknij tu, aby zobaczyć temat w orginalnym formacie

Forum PHP.pl _ MySQL _ Połączenie z bazą danych

Napisany przez: Bondar91 7.05.2019, 14:54:30

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

Napisany przez: Pyton_000 7.05.2019, 14:59:44

https://www.adminer.org/pl/ ale musisz mieć do kompletu host

Napisany przez: Bondar91 7.05.2019, 15:30:57

Ok dzięki za podpowiedź smile.gif

Napisany przez: nospor 7.05.2019, 15:40:09

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?

Napisany przez: Pyton_000 7.05.2019, 17:17:13

Nie wnikaj biggrin.gif Im mniej wiesz tym dłużej żyjesz tongue.gif

Napisany przez: 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 = http://www.php.net/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ć.

Napisany przez: Neutral 4.07.2019, 22:51:20

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 && http://www.php.net/is_int($connections[$i]->thread_id)) {
  15. $connections[$i]->kill($connections[$i]->thread_id);
  16. $connections[$i]->close();
  17. }
  18.  
  19. }
  20. http://www.php.net/sleep(2);
  21. http://www.php.net/var_dump($connections[$which_connect_true]->stat());
  22.  
  23. $query = $mysqli3->query('show processlist;');
  24.  
  25.  
  26. while($res = $query->fetch_assoc()) {
  27. http://www.php.net/var_dump($res);
  28. }
  29.  
  30. $connections[$which_connect_true]->close();
  31.  
  32. ?>


https://alvinalexander.com/blog/post/mysql/how-show-open-database-connections-mysql

Napisany przez: redeemer 5.07.2019, 08:34:10

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 = http://www.php.net/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.

Napisany przez: kastore 8.07.2019, 14:25:24

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.

Napisany przez: Pyton_000 11.07.2019, 21:35:26

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ć.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)