问题概述
最近使用dtp迁移工具对磐原来的pg数据库迁移到磐维数据库,迁移完成后发现部分对象迁移失败,经过分析发现是迁移用户权限不足导致,重新授权后迁移正常。
分析处理过程
迁移报错信息,ERROR: permission denied for schema public"
这个错误表明当前用户没有访问 public schema 的权限。以下是几种解决方法:
可能的原因和解决方案
用户缺少权限
1、授予用户对public schema的usage权限
GRANT USAGE ON SCHEMA public TO your_username;
2、如果需要创建表等操作,还需要更多权限
GRANT CREATE ON SCHEMA public TO your_username;
用户缺少public schema中对象的权限
3、授予用户对public schema中所有表的权限
GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO your_username;
检查默认权限
4、查看public schema的权限
\dn+ public
5、查看当前用户的权限
SELECT * FROM information_schema.role_schema_grants WHERE grantee = 'your_username';
使用超级用户修复
可以使用数据库管理员账户执行:
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL PRIVILEGES ON TABLES TO your_username;
预防措施
创建用户时直接授予必要权限
CREATE USER username WITH PASSWORD 'password';
GRANT USAGE, CREATE ON SCHEMA public TO username;
建议限制业务用户使用public schema权限,减少因权限过大导致的安全事故风险,提高数据库安全性。
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




