权限被拒绝的关系
我试图运行简单的sql命令:
select * from site_adzone;
我得到这个错误
ERROR: permission denied for relation site_adzone
这里可能是什么问题?
我也试图做其他表格select,并得到同样的问题。 我也试图做到这一点:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
但我从控制台得到了这个回应
WARNING: no privileges were granted for "jerry"
你有什么想法可能是错的?
GRANT对数据库不是你所需要的。 直接授予表格。
授予数据库权限主要用于授予或撤销连接权限。 这使您可以指定谁可以做数据库中的东西,如果他们有足够的其他权限。
你想要的是:
GRANT ALL PRIVILEGES ON TABLE side_adzone TO jerry;
这将处理这个问题。
在所有表格上发布Ron E答案,因为这对其他人可能是有用的。
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;
首先连接到正确的数据库 ,然后运行:
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO jerry;
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA <schema> TO <role>
适用于当前现有的表,但是如果您要指定将inheritance到未来表的默认权限,请运行:
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT <privileges> ON TABLES TO <role>;
例如
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO admin;
如果你使用SERIAL
或BIGSERIAL
列,那么你可能想要为SEQUENCES
做同样的事情,否则你的INSERT
将失败,即
ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>;
参考:
修改默认权限
GRANT