連載
» 2017年08月22日 05時00分 UPDATE

「データベーススペシャリスト試験」戦略的学習のススメ(18):SQLで「権限の付与」を行う

あの“津崎さん”も保有する難関資格「データベーススペシャリスト」。本企画では、データベーススペシャリスト試験 午前/午後試験対策のための「基礎知識」を抜粋してお届けします。今回は、「SQLでの権限付与の基礎」を解説します。

[具志堅融, 河科湊,著]

連載目次

ポケットスタディ データベーススペシャリスト [第2版]

書籍の中から有用な技術情報をピックアップして紹介する本シリーズ。今回は、秀和システム発行の書籍ポケットスタディ データベーススペシャリスト [第2版](2015年12月22日発行)』からの抜粋です。

ご注意:本稿は、著者及び出版社の許可を得て、そのまま転載したものです。このため用字用語の統一ルールなどは@ITのそれとは一致しません。あらかじめご了承ください。


※編集部注:前回記事「SQLで「ビュー作成」を行う」はこちら

SQLによる権限の付与

出題頻度 午前II:●-- 午後I:●-- 午後II:●--


 ●--:過去14年間での過去問出題数が1〜9回
 ●●-:過去14年間での過去問出題数が10〜19回
 ●●●:過去14年間での過去問出題数が20回以上


Key Word

GRANT、REVOKE、ビューの作成・利用に必要な権限


 データベースのセキュリティ機能として、基本的に権限を与えなければ、ビューやテーブルの参照・追加・更新・削除はできません。ここでは権限の付与・取り消しについて説明します。

GRANT文による権限の付与

 GRANT文により、ユーザに権限を与えることができます。以下の通り、「どのテーブル(ビュー)に」「何をする権限か」まで細かく指定します。

構文 GRANT 権限1, 権限2、…ON テーブル
    TO ユーザID WITH GRANT OPTION
権限 与える権限について、以下より指定する。
 SELECT:参照する権限を与える
 INSERT:行を追加する権限を与える
 DELETE:行を削除する権限を与える
 UPDATE:値を更新する権限を与える
 UPDATE(列名):特定列の値を更新する権限を与える
 ALL PRIVILEGES:上記の権限を全て与える
テーブル 上記権限を適用するテーブル名、もしくはビュー名を指定する
ユーザID 該当権限を与えるユーザを指定する。
 ※「PUBLIC」と指定すると全てのユーザに権限を与える
 ※ロールへの指定も可能
WITH GRANT
OPTION
該当権限自体を、別のユーザに与える権限もあわせて付与する場合、WITH GRANT OPTION を指定する
 ※省略可能

 以下の例では、ユーザ「USER1」に「発注テーブルの更新権限」と「発注テーブルの更新権限を他ユーザに与える権限」を同時に与えています。

GRANT UPDATE ON 発注 TO USER1 WITH GRANT OPTION

REVOKE文による権限の取り消し

 REVOKE文により、ユーザに与えた権限を取り消すことができます。

構文 REVOKE 権限1, 権限2、・・・ ON テーブル
    FROM ユーザID
権限 取り消す権限について以下より指定する。
 SELECT:参照する権限を取り消す
 INSERT:行を追加する権限を取り消す
 DELETE:行を削除する権限を取り消す
 UPDATE:値を更新する権限を取り消す
 UPDATE(列名):特定列の値を更新する権限を取り消す
 ALL PRIVILEGES:上記の権限を全て取り消す
テーブル 上記権限の取り消しが適用されるテーブル名、もしくはビュー名を指定する
ユーザID 該当権限を取り消すユーザを指定する。
 ※「PUBLIC」と指定すると全てのユーザの権限を取り消す。

 以下の例では、全てのユーザから「発注テーブルの参照権限、行追加権限、列削除権限、更新権限」を取り消しています。

REVOKE ALL PRIVILEGES ON 発注 FROM PUBLIC

演習17-1

 “商品”表へのアクセス権限のうち、行挿入権限とデータ更新権限だけをUSER01とUSER02の2利用者に与えるSQL文はどれか。

ア GRANT ALL PRIVILEGES ON 商品 TO USER01, USER02

イ GRANT INSERT, SELECT ON 商品 TO USER01, USER02

ウ GRANT UPDATE, INSERT ON 商品 TO USER01, USER02

エ REVOKE UPDATE, INSERT ON 商品 FROM USER01,USER02

(H14春DB午前問27)


解答 演習17-1 

 *囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)

要暗記



権限を与えるときはTO を、権限を取り消すときはFROM


ビューを作成するために必要な権限

 ビューを作成するためには、そのビューを通して参照する全てのテーブルへの参照権限が必要になります。尚、ビューが参照する全てのテーブルの参照権限に関して、全て「GRANT OPTION」が指定されていれば、そのビューを参照する権限を他ユーザに与える事ができます。

ビューを作成するために必要な権限のイメージ

 ビューの参照・行追加・データ更新・削除などの権限があれば、「ビューを通して参照する表」への権限がなくても、データを操作できます。

ビューを利用するために必要な権限のイメージ

Chance問題

演習17-2

 ビューのSELECT権限に関する記述のうち、適切なものはどれか。

ア ビューに対して問合せするには、ビューに対するSELECT権限だけではなく、元の表に対するSELECT権限も必要である。

イ ビューに対して問合せするには、ビューに対するSELECT権限又は元の表に対するSELECT権限のいずれかがあればよい。

ウ ビューに対するSELECT権限にかかわらず、元の表に対するSELECT権限があれば、そのビューに対して問合せすることができる。

エ 元の表に対するSELECT権限にかかわらず、ビューに対するSELECT権限があれば、そのビューに対して問合せすることができる。

(H22春DB午前II 問11)


解答 演習17-2 

 *囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)

本試験過去問題による類題演習
□H16 午前問30 SQL のオブジェクト処理権限
□H22 午前II 問2 SQL 文のGRANT を用いて設定するアクセス権限の説明

Point check

次のSQL文の実行結果の説明として、適切なものはどれか。

CREATE VIEW 東京取引先 AS
  SELECT * FROM 取引先
  WHERE 取引先.所在地 = '東京'
GRANT SELECT
  ON 東京取引先 TO "8823"

(H21春DB午前II問7)


 8823のユーザは、所在地が“東京”の行を参照できるようになる。

 このビューの作成者は、このビューに対するSELECT権限をもたない。

 実表“取引先”が削除されても、このビューに対するユーザの権限は残る。

 導出表“東京取引先”には、8823行までを記録できる。


解答 Point check 

 *囲み内をクリックすると解答を表示します(表示後ページをリロードすると、再び非表示になります)

書籍紹介

ポケットスタディ データベーススペシャリスト [第2版]

ポケットスタディ データベーススペシャリスト [第2版]

具志堅融、河科湊著
秀和システム 1,500円

データベーススペシャリスト試験は同じパターンの出題が多いため、過去問をたくさん解くことが合格の早道です。しかし、難易度の高い過去問を解くには、勉強が必要であり、多くの時間と労力を必要とします。本書は、プロの講師が推奨する、テキストを少し読み→該当する過去問を解き→理解を深めるというアジャイル的学習法で、驚くほど短時間で合格するツボとコツを解説します。"すき間時間"を活用して効果的な学習ができます!


注文ページへ

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。