[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 メーリングリストの案内