[pgsql-jp: 35807] create table権限の取り上げ

Yukitaka Ohmura oomura_yukitaka @ intec.co.jp
2005年 8月 8日 (月) 16:56:52 JST


大村と申します。

データベースに対してselectやinsertなどは実行できるが、
テーブルの作成はできないユーザを作りたいと考えています。
このユーザはWebアプリからの接続用に使用し、
テーブル作成などのDB管理は別のユーザが行うようにするためです。

以下のように権限の設定を行ったのですが、
web用ユーザ(webuser)がcreate tableを実行できてしまいます。
どのように権限を設定したらよいのでしょうか?
RedHat Enterprise Linux 3.0上の postgresql 7.4.8 で確認しています。

% psql -U postgres template1
template1=# CREATE user webuser;
CREATE USER
template1=# CREATE DATABASE webdb;
CREATE DATABASE
template1=# GRANT all on database webdb to webuser;
GRANT
template1=# REVOKE CREATE on DATABASE webdb from webuser;
REVOKE
template1=# \q

% psql -U webuser webdb
webdb=> CREATE TABLE newtbl(id int, nm char(4));
CREATE TABLE
webdb=> \d
         List of relations
 Schema |  Name  | Type  |  Owner
--------+--------+-------+---------
 public | newtbl | table | webuser
(1 row)

webdb=> select datname, datdba, datacl from pg_database;
  datname  | datdba |                         datacl
-----------+--------+---------------------------------------------------------
 postgres  |      1 | {=T/postgres,postgres=C*T*/postgres}
 template1 |      1 | {postgres=C*T*/postgres}
 template0 |      1 | {postgres=C*T*/postgres}
 webdb     |      1 | {=T/postgres,postgres=C*T*/postgres,webuser=T/postgres}
(4 rows)

pg_databaseに設定がない場合のデフォルト動作を指定する方法があるのでしょうか?


大村幸敬 (Yukitaka Ohmura)
(株) インテック
ビジネスソリューション事業本部
CRMソリューション第一部 Linux推進チーム
Phone: 045-451-2410  Fax: 045-451-2357
E-mail: oomura_yukitaka @ intec.co.jp



pgsql-jp メーリングリストの案内