- - PR -
PostgreSQL接続時に表示されるテーブルを制限したい
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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の設定を変更する事により、「特定のユーザーが接続した時は許可した テーブル以外は存在自体気づかないようにする」にはどのようにすれば良いのでしょうか。 皆様のお知恵をお貸しください。 よろしくお願い致します。 |
|
投稿日時: 2004-03-16 20:47
別のユーザでテーブルを作り、
ログインするユーザがシノニム経由で アクセスするようにすればよいのではないでしょうか。 |
1