我尝试运行简单的SQL命令:
select * from site_adzone;
我得到了这个错误
错误:关系site_adzone的权限被拒绝
这里有什么问题呢?
我也试着为其他表做选择,得到了同样的问题。我也试着这样做:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
但我收到了控制台的回复
警告:没有特权授予“jerry”
有人知道是哪里出了问题吗?
我尝试运行简单的SQL命令:
select * from site_adzone;
我得到了这个错误
错误:关系site_adzone的权限被拒绝
这里有什么问题呢?
我也试着为其他表做选择,得到了同样的问题。我也试着这样做:
GRANT ALL PRIVILEGES ON DATABASE jerry to tom;
但我收到了控制台的回复
警告:没有特权授予“jerry”
有人知道是哪里出了问题吗?
当前回答
确保以表的所有者身份登录psql。 要找出谁拥有这些表,请使用\dt
psql -h CONNECTION_STRING DBNAME -U OWNER_OF_THE_TABLES
然后你就可以运行GRANTS了
其他回答
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;
第一步也是最重要的一步是连接到你的数据库:
psql -d yourDBName
第二步,授予特权
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO userName;
由于您正在寻找选择权限,我建议您只授予选择权限,而不是所有权限。你可以这样做:
GRANT SELECT ON <table> TO <role>;
我遇到这个切换用户到另一个用户,也需要有相同的权利,我一直得到错误:“必须是关系xx的所有者”
修复是简单地把所有的权利从老用户给新用户:
将<老用户>授予<新用户>;
PostgreSQL。在bash终端上运行:
psql db_name -c "GRANT ALL ON ALL TABLES IN SCHEMA public to db_user;"
psql db_name -c "GRANT ALL ON ALL SEQUENCES IN SCHEMA public to db_user;"
psql db_name -c "GRANT ALL ON ALL FUNCTIONS IN SCHEMA public to db_user;"