Bob*_*ban 305 postgresql privileges grant postgresql-9.2
我试着运行简单的sql命令:
select * from site_adzone;
Run Code Online (Sandbox Code Playgroud)
我收到了这个错误
ERROR: permission denied for relation site_adzone
Run Code Online (Sandbox Code Playgroud)
这可能是什么问题?
我也尝试选择其他表并得到同样的问题.我也试过这样做:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
Run Code Online (Sandbox Code Playgroud)
但我从控制台得到了这个回应
WARNING: no privileges were granted for "jerry"
Run Code Online (Sandbox Code Playgroud)
你知道什么是错的吗?
Chr*_*ers 354
数据库上的GRANT不是您所需要的.直接在表格上授予权利.
授予数据库权限主要用于授予或撤消连接权限.这允许您指定谁可以在数据库中执行具有足够其他权限的内容.
你想要的是:
GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;
Run Code Online (Sandbox Code Playgroud)
这将解决这个问题.
sag*_*sag 221
发布Ron E回答所有表的授予权限,因为它可能对其他人有用.
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;
Run Code Online (Sandbox Code Playgroud)
小智 68
首先连接到正确的数据库,然后运行:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;
Run Code Online (Sandbox Code Playgroud)
小智 33
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public to jerry;
GRANT ALL PRIVILEGES ON ALL FUNCTIONS IN SCHEMA public to jerry;
Run Code Online (Sandbox Code Playgroud)
isa*_*pir 17
要为架构中的所有现有表授予权限,请使用:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema> TO <role>
Run Code Online (Sandbox Code Playgroud)
要指定将应用于将来表的默认权限,请使用:
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema>
GRANT <privileges> ON TABLES TO <role>;
Run Code Online (Sandbox Code Playgroud)
例如
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO admin;
Run Code Online (Sandbox Code Playgroud)
如果你使用SERIAL
或BIGSERIAL
列,那么你可能想要做同样的SEQUENCES
事情,否则你的INSERT
意志会失败(Postgres 10'sIDENTITY
不会遇到这个问题,建议超过SERIAL
类型),即
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>;
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息和可重用脚本,另请参阅我对Web应用程序的PostgreSQL权限的答案.
参考:
zon*_*ond 15
第一个重要的步骤是连接到您的数据库:
psql -d yourDBName
Run Code Online (Sandbox Code Playgroud)
2步,授予权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO userName;
Run Code Online (Sandbox Code Playgroud)
小智 7
你应该:
确保以表的所有者身份登录psql。找出谁拥有表使用\dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES
那么你可以运行格兰特
当您以用户postgres创建表然后尝试以普通用户身份访问表时,经常会发生这种情况。在这种情况下,最好再次以postgres身份登录,然后使用ALTER TABLE OWNER TO someuser将表所有权更改为将要使用该表的用户。
归档时间: |
|
查看次数: |
359417 次 |
最近记录: |