问题
工作中遇到一个问题,postgresql用非root用户去修改表结构字段,提示如下
ERROR:must be owner of root
一开始以为是权限问题,把root用户的增删改查各种权限赋予给普通账户,最后还是发现不行
postgresql中,对表的权限控制比较严格,很多事情只有owner才有权限去做。所以我们尽量用onwer账户去操作。
但是有的时候我们需求去批量修改owner,比如导入的表结构。但是官方并没有提供比较好的命令。
我们可以用拼接sql的方式去完成这个命令。
解决方法
先查询下该模式下具体有多少张表
select * from information_schema.tables where table_schema='public';
其次我们用拼接sql的方法去处理
select 'ALTER TABLE ' || table_name || ' OWNER TO yourowner;' from information_schema.tables where table_schema='public';
生成的sql复制下来,切换到root用户,执行即可把owner转移到你所需要的用户,即可用你的需要的用户去对数据库表结构进行设计