Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem krytyczny z uprawnieniami
toolmaniak
post
Post #1





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 29.05.2006
Skąd: /dev/null

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


Witam! Jest to w zasadzie kontynuacja poprzedniego POST-u tego z tabalami tymczasowymi, ale pojawił się zupełnie nowy problem. Otóż wcześniej miałem dla każdego użytkownika zdefiniowane nstępujące uprawnienia:

  1. REVOKE ALL PRIVILEGES ON `database` . * FROM 'lukasz'@'%'; GRANT USAGE ON `database` . * TO 'lukaszl'@ '%';
  2. GRANT SELECT , INSERT , UPDATE , REFERENCES ON `database`.`klienci` TO 'lukasz'@'%';
  3. GRANT SELECT , INSERT , UPDATE , REFERENCES ON `database`.`kontakty` TO 'lukasz'@'%';
  4. GRANT SELECT , INSERT , UPDATE , DELETE, REFERENCES ON `database`.`notatki` TO 'lukasz'@'%';
  5. GRANT SELECT , INSERT , UPDATE , REFERENCES ON `database`.`urzedy` TO 'lukasz'@'%';
  6. GRANT SELECT , INSERT , UPDATE , REFERENCES ON `database`.`status` TO 'lukasz'@'%';


Istniała jeszcze tabelka notatki_prywatne i tylko niektórzy ze specjalnymi uprawnieniami mieli do nich dostep. Zaistniała jednak konieczność użycia tymczasowych tabelek co wygląda mniej więcej tak:

  1. DROP TABLE IF EXISTS tmp;
  2. CREATE TEMPORARY TABLE tmp
  3. (SELECT firma,ulica,miejscowosc,kod_pocztowy,max(n.DATA) AS DATA,k.id AS id FROM klienci k,notatki n WHERE miejscowosc LIKE '%kraków%' AND k.id=n.id_klienci GROUP BY id);
  4.  
  5. INSERT INTO tmp ( SELECT firma,ulica,miejscowosc,kod_pocztowy,NULL AS DATA,k.id AS id FROM klienci k WHERE miejscowosc LIKE '%kraków%');
  6. SELECT DISTINCT firma, ulica,miejscowosc,kod_pocztowy,DATA,id FROM tmp GROUP BY id ORDER BY firma DESC;
  7. DROP TABLE IF EXISTS tmp;


No i żeby powyższe działało musiałem zdefiniować następujące uprawniena globalne:

  1. GRANT
  2. SELECT
  3. INSERT ,
  4. DROP ,
  5. CREATE TEMPORARY TABLES ,
  6. LOCK TABLES ON `database` . * TO 'lukasz'@'%';



Jak nietrudno się domyślić rozwaliło mi to całkiem dotychczasowy system przywilejów. Co zrobić, zostaje tylko tworzenie własnej tabeli z uprawnieniami i pozostawienie tych globalnych czy jest jakiś inny sposób? Please help.... (IMG:http://forum.php.pl/style_emoticons/default/blink.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
toolmaniak
post
Post #2





Grupa: Zarejestrowani
Postów: 77
Pomógł: 0
Dołączył: 29.05.2006
Skąd: /dev/null

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


Niestety nie mogę zrezygnować z tymczasowej tabeli chyba, że masz jakiś pomysł na to aby wyświetlał klienta który nie ma przypisanej notatki. Mniejsza z tym - obszedłem ten problem tak, że utworzyłem statyczną tabele o takiej samej nazwie z jedną dowolna kolumną (chodziło tylko aby nie wywaliło braku tabeli przy poleceniu GRANT)

  1. CREATE TABLE tmp (id int(11) NOT NULL, PRIMARY KEY (id), UNIQUE ID (id));


a potem dla wszystkich usżytkowników nastepujące kwerendy:

  1. REVOKE ALL PRIVILEGES ON `database` . * FROM 'lukasz'@'%'; GRANT CREATE TEMPORARY TABLES ON `database` . * TO 'lukasz'@'%';
  2.  
  3. GRANT SELECT ,
  4. INSERT ,
  5.  
  6. UPDATE ,
  7. DELETE ,
  8. CREATE ,
  9. DROP ,
  10. REFERENCES ,
  11. INDEX ,
  12. ALTER ON `database`.`tmp` TO 'lukasz'@'%';
  13.  
  14.  
  15.  
  16. GRANT USAGE ON `database` . * TO 'lukasz'@'%' WITH GRANT OPTION;
  17. GRANT SELECT , INSERT , UPDATE , REFERENCES ON `database`.`klienci` TO 'lukasz'@'%';
  18. GRANT SELECT , INSERT , UPDATE , REFERENCES ON `database`.`kontakty` TO 'lukasz'@'%';
  19. GRANT SELECT , INSERT , UPDATE , DELETE, REFERENCES ON `database`.`notatki` TO 'lukasz'@'%';


dalej już tylko zależnie od tego do czego dany user może mieć dostęp. i później
FLUSH PRIVILEGES;

i DZIAŁA!

A to wszystko dzieki temu, że MySQL jest tak głupi, że nie wie czy ma do czynienia z tabela tymczasową czy statyczną, choć w dokumentacji pisało jak byk że te dwa typy nawet o takich samych nazwach nie ma ją na siebie wpływu. http://dev.mysql.com/doc ...Nie wiem, chyba czas przejść na POSTGRESA?(IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) ?
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 7.10.2025 - 20:08