Adam.Pilorz napisał(a)
Dobra Shreq, zdajesz sobie sprawę na jakim procencie serwerów stoi MySQL 5? Bo na zdecydowanej większości jest jeszcze 4, więc myślę że to tutaj by trzeba było szukać rozwiązania.
Wracając do moich poprzednich argumentów.
Ad.1: Nikt nie musi podawać żadnych danych. Jeśli masz program, który się łączy z bazą i identyfikuje Ciebie po nazwie użytkownika i haśle, to raczej tą nazwę użytkownika i hasło znasz i je podajesz. Nawet jeśli nie, to posiadając ten program nie ma większej trudności w wydobyciu takich danych.
Ad.2: Jak chodzi o to, dlaczego loguję usera to dlatego, że o to było pytanie. Jak chodzi o padnięcie programu - z całym szacunkiem, ale piszemy oprogramowanie pod Windowsy na domowe komputery, a nie pod stabilny system do serwerowni jakiejś, gdzie każdy komputer ma kilka zewnętrznych źródeł zasilania + jakieś własne wewnętrzne (akumulatory, generatory). Wystarczy, że Ci się system powiesi, albo nawet sam program przestanie z jakiegoś powodu odpowiadać i będziesz musiał go ubić, albo że będzie przepięcie w sieci, albo co jeszcze innego - i już leżysz. Nie wspominając o nieprzewidzianym wyłączeniu listwy czy przypadkowym wciśnięciu resetu, co się ZDARZA.
Podtrzymuje WSZYSTKO co napisalem :)
Nie chcialem zasmiecac forum przytaczaniem pelnej dokumentacji, ale widze ze bylo trzeba. Opcja ograniczania ilosci polaczen DLA KONKRETNEGO UZYTKOWNIKA zostala wprowadzona w wersji 5.x. Oto fragment dokumentacji z wersji 4.1.7:
"max_user_connections
The maximum number of simultaneous connections allowed to any given MySQL account. A value of 0 means ``no limit.'' This variable was added in MySQL 3.23.34."
Dalej polecam czytanie dokumentacji :P
Z pytania nie wynika wprost, ze serwer musi byc "obcy". Ja to zrozumialem nastepujaco: "CZY MOZNA ograniczyc ilosc polaczen dla jednego uzytkownika". Odpowiedz: MOZNA. Proste :)
Nie kwestionuje padow komputera, resetow etc. Borykam sie z bazami danch od 16 lat. Podalem proste , skuteczne i SPRAWDZONE rozwiazanie: skoro piszesz program, decydujesz tez, co jest zapisywane w bazie. Zapisywanie samego loginu jest wiazaniem sobie nog, jak napisalem. Jesli zapiszesz rowniez MAC-a - masz korzysc podwojna:
a) wykrywasz logowanie uzytkownika z innego MAC-a, a masz jak wol ze jeszcze jest zalogowany z innego - obslugujesz przypadek logowania sie z kilku komputerow na to samo haslo.
b) logowanie z tego samego MAC-a, a poprzednia sesja otwarta - wystapila awaria lub uruchomienie dwoch kopii programu na tym samym komputerze.
Jest oczywiscie przypadek, ze userowi komputer padl wiec poszedl do innego i probuje sie zalogowac - to tez daje sie obsluzyc, ale jak - wpadnij na to sam :)
Pozdrawiam