[pgsql-jp: 35981] PostgreSQL 7.4.8 の REVOKE 出来無いユーザ
戸田 晃晴
toda-mxa @ cnt.necst.nec.co.jp
2005年 9月 9日 (金) 14:59:06 JST
戸田と申します。
PostgreSQL 7.4.8 の REVOKE 出来無いユーザについて、
アクセス権限の定義を削除する為、以下のREVOKEコマンドを
実行しましたが、削除出来ません。
一括で、強制削除する方法は有りませんでしょうか?
システム構成
OS:RedHat WS.3
$ cat /etc/redhat-release
Red Hat Enterprise Linux WS release 3 (Taroon)
PostgreSQL 7.4.8
testdb=# select version();
version
-------------------------------------------------------------------------
PostgreSQL 7.4.8 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.2.3 20030502 (Red Hat Linux 3.2.3-20)
(1 row)
PostgreSQL 7.4.6から、PostgreSQL 7.4.8にバージョンアップして使用しています。
バージョンアップの為、データをバックアップ/リストア時に、
$ psql -d template1 -f db.out
psql:db.out:112: ERROR: user "100" does not exist
GRANT ALL ON TABLE t_netid TO "100";
psql:db.out:145: ERROR: user "100" does not exist
を表示したので、データはそのまま使用しています。
アクセス権限の取り上げが出来無いユーザが有ります。
testdb=# \z
Access privileges for database "testdb"
Schema | Table | Access privileges
--------+---------------+------------------------------------------------------------------
public | admin_testid | {postgres=*******/postgres,100=arwdRxt/postgres}
public | dead | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | declined | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | member | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | myrecomnd | {postgres=a*r*w*d*R*x*t*/postgres,100=arwdRxt/postgres}
public | net | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | netid | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | netid_back | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | objectperson | {postgres=a*r*w*d*R*x*t*/postgres,100=arwdRxt/postgres}
public | resignmember | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
public | unanswer | {testusere=a*r*w*d*R*x*t*/testusere,100=arwdRxt/testusere,www=arwdRxt/testusere}
(11 rows)
の表示で、ユーザ登録されていないユーザ=100 が表示されており、
REVOKEコマンドで削除出来ません。
REVOKE ALL PRIVILEGES ON admin_testid FROM "100";
ERROR: user "100" does not exist
ユーザ=100 を登録して、
testdb=# \du
List of database users
User name | User ID | Attributes
-----------+---------+----------------------------
100 | 104 |
nagios | 102 | create database
testuser | 101 | superuser, create database
postgres | 1 | superuser, create database
www | 103 | superuser, create database
(5 rows)
REVOKEすると、
REVOKE ALL PRIVILEGES ON admin_testid FROM "100";
REVOKE
を表示しますが、削除出来ていません。以下のコマンドでも削除出来ませんでした。
REVOKE ALL PRIVILEGES ON DATABASE testdbe FROM "100" CASCADE;
REVOKE
REVOKE ALL PRIVILEGES ON DATABASE testdbe FROM "100" RESTRICT;
REVOKE
REVOKE ALL PRIVILEGES ON admin_testid FROM "100" CASCADE;
REVOKE
REVOKE ALL PRIVILEGES ON admin_testid FROM "100" RESTRICT;
REVOKE
ユーザ=www も、REVOKE出来ません。ユーザ名にpublicを使用しても同じでした。
ユーザ=100 を登録して、バックアップ/リカバーすれば
問題無く終了すると思われますが、必要ないユーザは削除したい。
以上。よろしくお願いいたします。
pgsql-jp メーリングリストの案内