質問: postgreSQLにて開発者が見れるtable、一般ユーザーが見れるtableを管理、設定したいと思っております。 例えばですが atable btable ctable とあった場合、開発者は全てのtableを利用する為、全てのtableを見る事が出来る。 ただ、一般ユーザーはatableのみ見せたい場合です。 この場合、roleにてselectを剥奪してselect文を拒否する事を指しているのではなく、 btable,ctableというtable名自身を見せたくない事をいっております。 色々調べて見ましたが、table名を見せなくする情報を見つける事ができずこちらへ質問させて頂きました。 皆様、宜しくお願い致します。 以下追記します。 各ユーザーはodbcドライバよりexcel2010を介してpostgreSQLへアクセスしています。 odbcドライバのユーザーを一般ユーザーに設定しています。 excel2010の画面より [データ]タブ ↓ [その他データソース] ↓ [データ接続ウィザード] ↓ [ODBC DSN] ↓ [※データ接続ウィザードの任意の名称] ↓ [データベースとテーブルの選択] こちらの画面の明細にてselectの権限が無いtableが表示されております。 今回の例ではこちらの画面にatableのみ表示したく思っております。 ご検討の程、宜しくお願い致します。 以下更に追記します。 一般ユーザー、開発者の切り分けは、postgreSQLのユーザー(ロール)をそれぞれ hogeuser、hogeadminなどの名前に分けて管理しています。 一般ユーザーのpcのodbcデータソースの設定画面にてユーザー名覧へhogeuserを設定し excel上よりアクセスしております。 以上になります。 宜しくお願い致します。
回答: 皆様、色々調べて解決方法を見つけましたので報告致します。 全てのtableが入ったデータベースalldbを作成。 一般ユーザーがアクセスするデータベースuserdbを作成。 userdbへCREATE EXTENSION dblink;を実行してdblinkを利用可能にします。 userdb内に一般ユーザーが見ても良いalldb側のtableへのdblink設定(view作成)を行い。 userdbを一般ユーザーに見てもらう事により解決できました。 皆様、色々ご意見頂き有難う御座いました。