我有一个安装了PostGIS扩展的PostgreSQL数据库。它有3个其他模式(tiger,tiger_data,拓扑)和公众。我的表应该在公共模式中,但是现在我无法运行doctrine:schema:update,因为这个错误:
[PDOException]
SQLSTATE[42501]: Insufficient privilege: 7 ERROR: permission denied for schema topology
LINE 1: SELECT min_value, increment_by FROM "topology"."topology_id_...
所以我无法从我的实体生成我的表(或者只是转储DDL sql)。
我能否以某种方式限制学说只分析公共计划并跳过其他计划?
答案 0 :(得分:1)
超级用户创建扩展后,您可以将所需模式的权限授予默认用户。
-- tables and views
GRANT SELECT ON ALL TABLES IN SCHEMA topology TO some_username;
ALTER DEFAULT PRIVILEGES
IN SCHEMA topology
GRANT SELECT
ON TABLES
TO some_username;
-- sequences
GRANT SELECT, USAGE ON ALL SEQUENCES IN SCHEMA topology TO some_username;
ALTER DEFAULT PRIVILEGES
IN SCHEMA topology
GRANT SELECT, USAGE
ON SEQUENCES
TO some_username;
-- usage
GRANT USAGE ON SCHEMA topology TO PUBLIC;
这里是Ansible的模板,用于准备与PostGIS一起使用的数据库:https://gist.github.com/leafnode/5b416efe87ed152b12bb24b1dc4f5f14如果在共享环境中使用数据库,可能会收紧一些权限。