通过下sql查出表所属的owner,一个user创建的表,另一个用户是不能使用DDL的,超级用户除外
select t.table_name, t.table_type, c.relname, c.relowner, u.usename
from information_schema.tables t
join pg_catalog.pg_class c on (t.table_name = c.relname)
join pg_catalog.pg_user u on (c.relowner = u.usesysid)
where t.table_schema='org';
postgresql使用grant 授权的时候,是没有mysql alter权限可以授予的,如果想做其他用户创建的 schema或table或sequence 做DDL(管理),你只能通过变更 owner的方式,把schema,table ,sequence的owner授予操作人才可以。
然后使用alter table org.org_company owner to db_user; 把原来有postgres创建的变成db_user 创建。
修改一个表的名字,alter table org.org_company rename to org_company ,修改成的新名字,前面不需要加schema,否则报错
之前的 PG 用户习惯使用 superuser 进行日常运维,一方面 superuser 完全不用做任何的授权,使用方便;另一方面这样的操作带来了潜在的风险,容易误操作。
最近碰到了较多的用户反馈,没有了超级用户,无法使用 RDS 的普通用户,管理其他普通用户创建的对象,经常出现操作对象无权限的问题,尤其存在多用户的情况下。通常情况下:
很多用户,使用了很多个 user 在 public 模式下创建了多张表,但是单个用户却没有权限同时管理他们, 更没有权限切换他们的 owner 到一个统一的用户下做统一处理,十分恼
POSTGRESQL 的结构是这样的, database-schema-各类对象的权限:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!