最終更新日:2026年9月15日
fe database sql security
まず結論
SQLで、特定のユーザーやロールに表などを操作する権限を与えるときに使うのが GRANT 文です。
逆に、与えた権限を取り消すときに使うのが REVOKE 文です。
基本情報技術者試験では、まず次のように切り分けると判断しやすくなります。
データを実際に更新する
→ UPDATE
更新してよい権限を与える
→ GRANT UPDATE
与えた更新権限を取り消す
→ REVOKE UPDATE
特に重要なのは、操作そのものを行うSQLと、その操作を許可するSQLを混同しないことです。
直感的な説明
データベースを「共有の書類棚」と考えてみます。
SELECT や UPDATE は、実際に書類を読んだり書き換えたりする操作です。
一方、GRANT は、管理者が利用者に対して、
- この表は読んでよい
- この表は更新してよい
- この表には追加してよい
と、操作する許可を与えるための命令です。
つまり、
UPDATE
→ 書き換える
GRANT UPDATE
→ 書き換えてよいと許可する
という違いです。
定義・仕組み
GRANT文
GRANT は、ユーザーやロールにデータベースオブジェクトへの権限を付与するときに使います。
基本形は次のように考えます。
GRANT 権限
ON オブジェクト
TO ユーザーまたはロール;
たとえば、利用者 user_a に employees 表を更新する権限を与えるなら、概念的には次の形です。
GRANT UPDATE
ON employees
TO user_a;
REVOKE文
REVOKE は、付与済みの権限を取り消すときに使います。
REVOKE 権限
ON オブジェクト
FROM ユーザーまたはロール;
たとえば、更新権限を取り消すなら次のように考えます。
REVOKE UPDATE
ON employees
FROM user_a;
よく使う権限
試験では、細かなDBMSごとの差より、次の基本的な操作との対応を押さえる方が重要です。
| 権限 | できること |
|---|---|
| SELECT | データを読む |
| INSERT | データを追加する |
| UPDATE | データを変更する |
| DELETE | データを削除する |
これらの操作を許可するときに GRANT を組み合わせます。
読む権限を与える
→ GRANT SELECT
追加する権限を与える
→ GRANT INSERT
更新する権限を与える
→ GRANT UPDATE
削除する権限を与える
→ GRANT DELETE
科目Aでどう出る?
科目Aでは、SQL文の役割を見分ける問題として出ることがあります。
判断軸1:実際に操作するのか、操作権限を与えるのか
まずここを切り分けます。
表のデータを更新する
→ UPDATE
利用者に表を更新する権限を与える
→ GRANT UPDATE
「更新」という言葉だけを見て UPDATE を選ばないことがポイントです。
判断軸2:権限を与えるのか、取り消すのか
許可する
→ GRANT
取り消す
→ REVOKE
この対比はそのまま覚えて大丈夫です。
判断軸3:制約と権限管理を混同しない
参照制約や整合性制約は、データの内容や表同士の関係を正しく保つためのものです。
一方、GRANT / REVOKE は、誰が何をしてよいかを管理します。
データの正しさを守る
→ 制約
利用者の操作範囲を決める
→ GRANT / REVOKE
どんな場面で使う?
データベースでは、全員に同じ権限を与えるとは限りません。
たとえば、
- 閲覧担当者はSELECTだけ
- 入力担当者はINSERTも可能
- 管理担当者はUPDATEやDELETEも可能
のように、役割に応じて権限を分けます。
これはセキュリティの基本である最小権限の原則にもつながります。
必要な人に
必要な操作だけ
許可する
という考え方です。
よくある誤解・混同
UPDATE文で更新権限を与える
誤りです。
UPDATE は、実際にデータを書き換えるSQLです。
権限を与えるなら GRANT UPDATE と考えます。
CREATE TABLEの参照制約で利用者を制限する
誤りです。
参照制約は、表同士の整合性を保つための仕組みです。
「誰が更新してよいか」という利用者の権限管理には使いません。
GRANTは接続だけを許可する文である
誤りです。
GRANT は、DBMSや権限体系に応じて、表などのオブジェクトに対する操作権限を付与するために使われます。
GRANTとREVOKEを逆に覚える
次の形で覚えると混同しにくいです。
GRANT
→ 与える
REVOKE
→ 取り消す
まとめ(試験直前用)
GRANTは、ユーザーやロールに権限を与えるREVOKEは、与えた権限を取り消すUPDATEは実際の更新、GRANT UPDATEは更新権限の付与SELECT・INSERT・UPDATE・DELETEは操作の種類- 制約はデータの整合性、GRANT / REVOKE は利用者の権限管理
- 問題文に「特定の利用者だけ」「権限を与える」とあれば、まず
GRANTを疑う