コンピュータクワガタ

かっぱのかっぱによるコンピュータ関連のサイトです

権限がわかれば便利便利

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