カラム単位での権限付与と権限剥奪
MySQLでは以下のように行うことでカラム単位での権限付与と権限剥奪を行うことができます.
以下のようなテーブルがあったとして
mysql> CREATE TABLE t1 (c1 int primary key, c2 int);
主キーであるc1の更新は許可したくないのでc2のみ更新(UPDATE)してもよいというような許可を与える場合.
mysql> GRANT UPDATE (c2) on test.t1 to 'foobar'@'localhost' identified by 'foobar';
というようにやります.(この例では"test"データベースが対象となっているので意味はありません)
この設定内容は"mysql"データベースからもSELECT文で見れますが,Information_Schemaを使った場合には以下のように見ることができます.
mysql> SELECT * FROM INFORMATION_SCHEMA.COLUMN_PRIVILEGES \G *************************** 1. row *************************** GRANTEE: 'foobar'@'localhost' TABLE_CATALOG: NULL TABLE_SCHEMA: test TABLE_NAME: t1 COLUMN_NAME: c2 PRIVILEGE_TYPE: UPDATE IS_GRANTABLE: NO 1 row in set (0.00 sec)
逆に権限剥奪を行いたい場合には
mysql> REVOKE update (c2) on test.t1 from 'foobar'@'localhost';
とやれば消せます.
詳しくは以下を見て下さい.
http://dev.mysql.com/doc/refman/4.1/ja/grant.html