- PR -

PostgreSQL接続時に表示されるテーブルを制限したい

1
投稿者投稿内容
ta-ka
会議室デビュー日: 2003/06/04
投稿数: 3
投稿日時: 2004-03-12 12:14
お世話になります。ta-kaと申します。

現在、以下の実行環境でwindows上からLinux上のPostgreSQLに接続した際に、
特定のテーブルのみを表示させたいと考えています。
実行環境
 Red Hat Linux8.0
 PostgreSQL7.4
(PostgreSQL内に作成したデータベースには5つのテーブルがあり、このうち
 1つだけを表示させたいと考えています。)

当初はwindows側のODBCドライバの設定にある、OptionのSysTablePrefixesに
非表示にしたいテーブル名を追加しようと考えていましたが、
以下の理由により断念しました。
・クライアント毎に設定が必要になる
・ユーザーに設定を変更されたら非表示にしていたテーブルも表示されてしまう
・ODBC接続以外の方法で接続した場合は当然全てのテーブルが表示される

そこでLinux側で通常データベースに接続しているユーザーとは別のユーザーを
作成し、テーブルAに対するSELECT権限のみを与えてみました。
・GRANT SELECT ON TABLE テーブルA TO 新規ユーザー

この状態でwindows側からCommon SQL Environmentというソフトを使い、
新規に作成したユーザーでPostgreSQLに接続してみたのですが、
やはり全てのテーブルが一覧の項目に表示されてしまいます。
(作成した5つのテーブル、pg_で始まるシステムテーブルなど)
ODBC接続の方も設定を追加したテーブル名を削除した状態で確認してみましたが
5つのテーブル全てが表示されていました。

この結果はよくよく考えてみると、SELECT権限というのはSELECT文を実行できる
権利であってテーブルの存在自体が隠れないのは当然の様な気がします。

PostgreSQLの設定を変更する事により、「特定のユーザーが接続した時は許可した
テーブル以外は存在自体気づかないようにする」にはどのようにすれば良いのでしょうか。

皆様のお知恵をお貸しください。
よろしくお願い致します。

raystar
ぬし
会議室デビュー日: 2003/01/16
投稿数: 251
お住まい・勤務地: Tokyo/Japan
投稿日時: 2004-03-16 20:47
別のユーザでテーブルを作り、
ログインするユーザがシノニム経由で
アクセスするようにすればよいのではないでしょうか。
1

スキルアップ/キャリアアップ(JOB@IT)