これについてお手伝いさせてください:
-
1位 :
を使用してサーバーにログインするようにしてください。pg_catalog
のため スーパーユーザーpostgresが所有しています 、したがって、このrole:pg_catalogスキーマ権限 -
2番目 :必ず右に接続してください GRANT / REVOKEが必要なデータベース の権限。 GRANT / REVOKEは、現在にのみ影響します 接続したデータベース。つまり、スーパーユーザーアカウントでログインした後、次のように発行します: \ c [the db] そのデータベースに接続するために、シェルは次のように変更されます: [the db] =>
-
3番目 :
pg_catalog
のテーブル デフォルトでは、SELECTをPUBLICに付与します:pg_catalogのテーブル。したがって、REVOKE SELECT FROM PUBLICを実行してから、適切なユーザーにGRANT SELECTを実行する必要があります:SCHEMA pg_catalogFROMPUBLICのすべてのテーブルでSELECTを取り消します;
GRANT SELECT ON TABLE [table] TO [user];
データベース内のリストテーブルの場合: pg_class およびpg_namespace 。
そしてそれがすべてです:)