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