私はpsqlで次のSQLを実行しました。
CREATE USER bspu LOGIN;
CREATE DATABASE bsp OWNER bspu;
GRANT ALL PRIVILEGES ON DATABASE bsp TO bspu;
\c bsp
CREATE TABLE users (
id SERIAL PRIMARY KEY,
client_id VARCHAR(20) NOT NULL,
api_key VARCHAR(100) NOT NULL,
api_secret VARCHAR(100) NOT NULL,
auth_token VARCHAR(128) NOT NULL
);
としてログインしbspu
、users
テーブルをクエリしようとすると、エラーが発生します。
permission denied for relation users
私は走ってみました:
ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO bspu;
しかし、それは役に立ちません。何が悪いのですか?データベース所有者が自分のデータベースをクエリする権限を持っていないのはなぜですか?
編集:私bspu
は今のところスーパーユーザーにアップグレードしたので、作業を続けることができます。それ以上のガイダンスはありがたいです。
@bma私のメインのアカウントのみがリストされています。
—
__name__がNoneの場合
最初のコマンドはどのユーザーとして実行しましたか?
—
Erwin Brandstetter 2013年
SELECT session_user, current_user
スクリプトの上部から何を取得しますか?そして、あなたのPostgresバージョンは何ですか?
これらがあなたが実行した正確なコマンドであった場合、あなたはまだあなたの「メインアカウント」に接続されています。したがって、どのような特権を持っているかがわかります。そうでなければ、アーウィンの優れた答えを見てください。(このエラーメッセージでは、どのロールに権限がないかが分からないので、私は馬鹿げていると思います。たとえば、SECURITY DEFINERを使用して関数のチェーンを実行すると、だれが誰であるかがかなり速く混乱します。)
—
dezso
\dt "users"
表示の出力は何ですか?