質問: 'aaa,bbb,"$user", public' その後postgreSqlを再起動し、show search_path;で確認しても、 設定した通りの値が確認できます。 ですが、aaaスキーマの所有者であるaaaユーザでログインし、 bbbスキーマ(所有者は別)のテーブルを参照しようとすると、 リレーション"テーブル名"は存在しません。 となります。 oracleで言うシノニム的な意味合いで使えると思っていましたが、 スキーマの所有者が別であれば違うのでしょうか。 (権限などは特に付与してないです。) 結局、所有者が別のスキーマのテーブルを参照するには、 権限を付与した上で「bbb.テーブル名」のようにしないといけないのでしょうか。
回答: search_pathはあくまでスキーマ名を省略した時に自動的に補われるものの指定であって、 該当オブジェクトにアクセスできるかどうかは別の問題です。 データベースオブジェクトに対するGRANT GRANT を確認の上、`GRANT SELECT ON ~`しておく感じかと。