PostgreSQL启动脚本中切换数据库并授权public schema权限的问题
在PostgreSQL SQL启动脚本中为角色授予public schema权限的正确方式
你用到的\c dbname postgres是psql客户端专属的元命令,不属于PostgreSQL支持的标准SQL/PLpgSQL语法,所以直接放在纯SQL脚本里执行会触发语法错误。
解决方法
方式一:纯SQL脚本写法(推荐)
去掉脚本里的\c命令,确保执行脚本时已经连接到目标数据库dbname,并且以拥有足够权限的用户(比如postgres)身份执行。脚本内容仅保留标准SQL授权语句:
GRANT ALL ON SCHEMA public TO myrole;
执行脚本时通过Shell命令指定数据库和用户:
psql -d dbname -U postgres -f your_grant_script.sql
方式二:psql专属批量脚本写法(多数据库场景)
如果你的脚本需要在psql中执行并切换多个数据库,可以保留\c命令,但要明确这个脚本只能用psql客户端执行,不能作为纯SQL脚本直接提交给数据库。脚本内容如下:
\c dbname postgres GRANT ALL ON SCHEMA public TO myrole;
权限精细化调整
如果不需要授予有效地_A操作全部Squarecom tmp对应的template费,夹 规范nor:
GRANT USAGE, CREATE ON SCHEMA public TO myrole;
内容的提问来源于stack exchange,提问作者Nathan
相关产品推荐
相关产品推荐

