5

特定のユーザーに表示されないようにしたい列を含むテーブルがあります。ビューを使用してこれを実行できる必要があることを理解しています。つまり、特定の列を除外するビューがあり、テーブルへのアクセスを拒否しますが、ビューへのアクセスを許可します (ユーザーがテーブルを更新できる必要はないことに注意してください)。 /見る)。

ただし、フィールドに対する等値クエリを許可したいと考えていますそのような:

SELECT * FROM some_table_or_view WHERE hidden_field = 'some_value';

明確にするために:

  • hidden_field一般的なクエリで値を返すことはできません
  • 値に対して制約(できれば等式制約のみ)を使用してクエリを実行できる必要がありhidden_fieldます

これは可能ですか?

(編集: Mysql 以外の dbms に解決策がある場合は、それについても喜んでお知らせします)。

4

2 に答える 2

4

返すことを許可したすべてのフィールドを返すストアド プロシージャを作成し、hidden_​​value (フィルター条件) をパラメーターとして渡すことができます。

データベース ユーザーがテーブルにアクセスすることを禁止しますが、ストアド プロシージャの呼び出しは許可します。

もちろん、テーブルに対して複数の種類のクエリがある場合は、いくつかのストアド プロシージャを作成する必要があります。しかし、少なくとも権利に関する問題は解決します。

于 2012-04-16T14:02:57.660 に答える
0

いいえそうではありません。ユーザーに列hidden_​​valueで結果をフィルター処理する可能性を与えることは、ユーザーが選択権限を持っていることを意味し、それはまた、ユーザーが列を表示できることを意味し、したがってそれを選択します。ここでhttp://dev.mysql.com/doc/refman/5.1/en/grant.html は、mySQLでユーザーに付与できる権限と付与しない権限のリストです。

于 2012-04-16T13:59:54.330 に答える