[pgsql-jp: 36037] Re: PostgreSQL 7.4.8 の REVOKE 出来無いユーザ

toshiaki shinmori shinmori @ cbnet.co.jp
2005年 9月 22日 (木) 18:40:25 JST


新守と申します。

ちょっと戸田さんと状況が違いますが参考になればと思いメール
しました。

私の場合は各テーブルからユーザの権限をREVOKEする前に、誤って
dropuserしてしまいました。
対応として、createuserの--sysidを使用してユーザIDを指定して
ユーザを作成し、各テーブルの権限をREVOKEしまくりました。
PostgreSQL 8.0.3でのことですが、7.3.8でも同様にできると思いま
す。
一括でできればいいのでしょうがちょっと思いつきませんでした。

的外れでしたら申し訳ありません。

以上


On Fri, 09 Sep 2005 14:59:06 +0900
戸田 晃晴 <toda-mxa @ cnt.necst.nec.co.jp> wrote:

> 戸田と申します。
> 
> 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 を登録して、バックアップ/リカバーすれば
> 問題無く終了すると思われますが、必要ないユーザは削除したい。
> 
> 
> 以上。よろしくお願いいたします。
> 

+----+----+----+----+----+----+----+
(株)コンピューター・ビジネス 新守
e-mail: shinmori @ cbnet.co.jp
+----+----+----+----+----+----+----+




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