21

MySQL データベースがあり、その中にいくつかのテーブルがあります。1 つはもちろん、ユーザー名とパスワードを格納するための users テーブルです (このテーブルには残りの情報も含まれています)。スキーマ内のすべてのテーブルについて、ユーザー (またはグループ) に個々のフィールドへのアクセス許可を付与できるようにしたいと考えています。例が役立つかもしれません:

ACCOUNTS というテーブルがあります。このテーブルでは、ユーザーは会社に関するすべてのデータ (名前、住所、POC など) を入力します (そして最新の状態に保ちます)。しかし、このテーブルには、LastPaymentDate など、読み取り専用のフィールドをこのテーブルに追加したいと考えています (ユーザーに変更させることはできません!)。さらに、それらのユーザーの間で権限が異なります。たとえば、管理者/スーパーユーザーは会社の名前と住所を変更できますが、標準ユーザーは変更できません。

これは、テーブルに対して複数のビューを作成することによって行う必要があるかもしれないと考えています。アクセス許可のレベル (グループ) ごとに 1 つです。私は比較的 MySQL に慣れていないので、これが最善の方法かどうかはわかりません。また、表示/編集が許可されているフィールドを示すルックアップ テーブルも表示されます。

私が最初に考えたのは、コメント (またはフィールドの名前) に 0 から 5 の値を含めて、ユーザーにアクセス許可レベル (0 - 表示不可、1 - 読み取り専用、2 - 読み取り -) を与えることでした。書き込み; 3-(未使用); 4-(未使用); 5-フィールド自体を編集/削除します。

助言がありますか?ビュー?表示するフィールドを決定するルックアップ テーブル 繰り返しますが、テーブル全体ではなく、テーブル内の各列に対してです。

4

1 に答える 1

44

次のコードを使用して、個々の列に対する権限をユーザーに付与できます。

GRANT SELECT (col1), INSERT (col1,col2) ON mydb.mytbl TO 'someuser'@'somehost';

ここから取った例:

http://dev.mysql.com/doc/refman/5.1/en/grant.html

また、MySQL では、ユーザーのグループまたは SQL ROLES (特権のグループ) はサポートされていません。

于 2013-05-21T16:24:02.227 に答える