権限がわかれば便利便利
testschema作成直後の権限。
testschema | testadmin | |
次に、PUBLICの権限をすべて剥奪する。
test=# REVOKE ALL PRIVILEGES ON SCHEMA testschema FROM PUBLIC RESTRICT;
そうすると、デフォルトの権限ではなくなるので以下のようになる。
testschema | testadmin | {testadmin=UC/testadmin} |
そして、testdadminにGRANT OPTIONを付ける。
test=> GRANT ALL PRIVILEGES ON SCHEMA testschema TO testadmin WITH GRANT OPTION;
すると、*が付く。
testschema | testadmin | {testadmin=U*C*/testadmin} |
ちなみに、所有者なので*がなくてもGRANT OPTIONを付与できた(と思う)。
そして、通常のユーザにUSAGE権限を与えてみる。
test=> GRANT USAGE ON SCHEMA testschema TO GROUP testdevs;
すると、権限は以下のように長くなってくる。もちろん*は付いていない。
testschema | testadmin | {testadmin=U*C*/testadmin,"group testdevs=U/testadmin"} |
最後に、PUBLICにALL権限を付けてみる。
test=> GRANT ALL PRIVILEGES ON SCHEMA testschema TO PUBLIC;
PUBLICはグループが空で表記されている。
testschema | testadmin | {testadmin=U*C*/testadmin,"group testdevs=U/testadmin",=UC/testadmin} |
これが、7.4.6でできたら楽なのに。
ユーザを変えてtestdevsグループのユーザで権限を付与しようとしても、
test=> GRANT USAGE ON SCHEMA testschema TO PUBLIC; WARNING: no privileges were granted
のようになりエラーとなってしまう。
逆に、testdevsにUSAGEのGRANT OPTIONを付け、CREATEはGRANT OPTIONなしで権限だけあたえて実行してみると、
test=> GRANT USAGE ON SCHEMA testschema TO PUBLIC; GRANT test=> GRANT CREATE ON SCHEMA testschema TO PUBLIC; WARNING: no privileges were granted GRANT
ALLで与えると、一瞬すべて与えられたように思うが、
test=> GRANT ALL PRIVILEGES ON SCHEMA testschema TO PUBLIC; GRANT
権限を確認するとUの権限しか与えられていない。
=U/namakuwa
ここで、GRANT OPTIONを与えようとしたがうまく行かない。が、お昼休みが終わったので終了。
test=> GRANT USAGE ON SCHEMA testschema TO PUBLIC WITH GRANT OPTION; ERROR: grant options can only be granted to individual users