応用情報技術者の午後問題に、よくDBのGRANT命令(権限付与)に関する問題がよく登場する。
しかし、小規模な組織だとシステム担当者にフル権限を持つユーザを与えてしまうことが多い(と思う)ので、(私が)あまりこの手の問題に詳しくないのでメモしておく。
DBのスキーマについて…多様な意味がある。
学術的にはDBのスキーマといった場合、3層スキーマ(外部スキーマ、概念スキーマ、内部スキーマ)のことを指すようだ。しかし実務的には、MySQL/MariaDBの場合はデータベース名のことを指す(PostgreSQLの場合はDB名とスキーマ名は別概念で(DB名の中にスキーマ名が複数含まれるが)通常は一緒のものと考えてしまって概ね差し支えることはないと思う。
※ほぼ問題ないということは、問題があるということもある、という含みなんだけど、その辺にふれるとややこしくなるのでやめておきます。
GRANT(権限付与)の書き方
応用情報技術者では権限付与の問題がよく出るので、GRANT文の記述のしかたを覚えておくこと。
GRANT <命令> ON <スキーマ名.テーブル名> TO <ユーザ名>
例えば「人事部スキーマの管理職テーブルの参照権限を営業課長ユーザに与えて欲しい」と言われた場合は…
GRANT SELECT ON 人事部.管理職 TO 営業課長
…などと記述することになる。
なお、GRANTの逆はREVOKEである。
またテーブルがVIEW(導出表)である時も参照権限などを付与する必要がある。
コメント