权限被拒绝的关系

我试图运行简单的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; 

如果你使用SERIALBIGSERIAL列,那么你可能想要为SEQUENCES做同样的事情,否则你的INSERT将失败,即

 ALTER DEFAULT PRIVILEGES IN SCHEMA <schema> GRANT ALL ON SEQUENCES TO <role>; 

参考:

修改默认权限

GRANT