2

Postgresデータベースのユーザーを作成しましたが、設定したユーザーでデータにアクセスできません。

Pythonシェルで、次のコードを実行しました。

>>> import psycopg2

>>> conn=psycopg2.connect(
database="db",
user="postgres",
host="/tmp/",
password="opensesame"
)

>>> cur = conn.cursor()

>>> state = 'Arkansas'

>>> cur.execute("SELECT city FROM table WHERE state = %s", (state,))

Traceback (most recent call last):
  File "<pyshell#8>", line 1, in <module>
    cur.execute("SELECT city FROM table WHERE state = %s", (state,))
ProgrammingError: permission denied for relation table

スーパーユーザーとして、私は次のことを試しました。

db=# ALTER USER postgres SET TO default

しかし、それは役に立ちませんでした

このユーザーにこのテーブルへのアクセスを許可する必要があります。助けていただければ幸いです。ご覧いただきありがとうございます。

4

2 に答える 2

1

これを試して、postgresにログインしてください

sudo -u postgres psql

次に入力\lすると、すべてのテーブルが一覧表示され、作成したデータベースの一覧が表示されます。

それから

GRANT ALL ON db TO postgres;

すべてがうまくいけば、\lもう一度やり直して、特権があることを確認する必要があります。

于 2013-03-02T00:27:05.473 に答える
0

私のコードでは、次のエラーメッセージが表示されていました。

ProgrammingError: permission denied for relation author

それでも:

GRANT ALL ON db TO postgres;

いくつかのこのエラーを解決する可能性があります、私は後で見つけました: 関係のために許可が拒否されました

DBの代わりに、リレーション、シーケンス、またはテーブルに名前を付けることができます。上記のリンクによると、DBでの特権の付与は、テーブル、リレーション、シーケンスを再帰的に調べてそれらすべてに特権を付与するのではなく、接続へのアクセスに関係している可能性があります。

少なくとも、このエラーが発生した場合は、この記事とその記事の両方を読んで、どちらかが問題を解決するかどうかを確認してください。

于 2014-10-16T03:44:06.937 に答える