我已經嘗試過幾乎所有可以獲得postgres中某些關係的用戶權限。以下是我已經試過:無論如何都無法獲得關係的權限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO myuser;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO myuser;
ALTER DEFAULT PRIVILEGES GRANT ALL ON TABLES TO myuser;
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO myuser;
我已經改變了我pg_hba.cnf這樣:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
# IPv4 local connections:
host all all 127.0.0.1/32 trust
# IPv6 local connections:
host all all ::1/128 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local replication postgres peer
#host replication postgres 127.0.0.1/32 ident
#host replication postgres ::1/128 ident
我敢肯定,如果你擺弄他們的權利,這些命令做一些事情,但爲什麼這些命令中沒有任何一個能夠在接近他們所說的地方做任何事情?
我使用python:
>>> conn = psycopg2.connect(host="localhost", port="5432", dbname="mydb",user="myuser", password="mypassword")
>>> cur = conn.cursor()
>>> cur.execute('select count(*) from mytable')
這是我得到的錯誤:
>>> cur.execute('select count(*) from public.mytable')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
psycopg2.ProgrammingError: permission denied for relation mytable
我也試過:
ALTER DATABASE mydb OWNER TO myuser;
並反覆重啓,當然。
在得到錯誤之前執行了什麼命令? –
模式爲「公共」的表?你可以在用'psql'連接時以'myuser'的身份訪問它嗎? –
說明顯而易見:在schema中是mytable嗎?或者它可能位於search_path的不同模式中? –