2012-04-16 13 views
5

Mam tabelę z kolumną, której chcę uniemożliwić niektórym użytkownikom. Rozumiem, że powinienem móc to zrobić za pomocą widoku, tj. Mieć widok, który wyklucza konkretną kolumnę, i odmówić dostępu do tabeli, ale umożliwić dostęp do widoku (uwaga, użytkownicy nie muszą mieć możliwości aktualizacji tabeli /widok).Mysql: zezwolić na zapytanie w kolumnie, która w przeciwnym razie nie jest dostępna?

I do jednak chcę zezwolić na zapytanie równości wobec tego pola. Takich jak:

SELECT * FROM some_table_or_view WHERE hidden_field = 'some_value'; 

Dla wyjaśnienia:

  • to nie powinno być możliwe, aby mieć wartości hidden_field być zwrócony w ogólnym zapytania
  • powinno być możliwe do uruchomienia kwerendy z przymusu (korzystnie tylko ograniczenie równości) na wartości hidden_field

Czy to możliwe?

(EDYCJA: jeśli istnieje rozwiązanie w DBMS inne niż MySQL, ja też chętnie o tym usłyszeć).

Odpowiedz

4

Można utworzyć procedurę składowaną, która zwróci wszystkie pola, które można zwrócić, a następnie można przekazać wartość hidden_value (kryterium filtrowania) jako parametr.

Nie zezwalaj użytkownikom bazy danych na dostęp do tabeli, ale zezwól im na wywoływanie procedur składowanych.

Oczywiście trzeba byłoby utworzyć kilka procedur składowanych, jeśli kilka typów zapytań dotyczyło tabeli. Ale przynajmniej rozwiązuje twój problem z prawami.

+0

Dzięki, to jest dobra sugestia i może być opłacalna. – davmac

0

Nie, nie jest. Zapewnienie użytkownikowi możliwości filtrowania wyników za pomocą kolumny hidden_value oznacza, że ​​mają one prawa wyboru, a to oznacza, że ​​widzą kolumnę, a zatem ją wybierają. Oto http://dev.mysql.com/doc/refman/5.1/en/grant.html to lista uprawnień, które można przyznać lub nie przyznać użytkownikom w mySQL.

Powiązane problemy