Doctrine2 PostgreSQL架构限制

时间:2014-06-25 11:31:58

标签: php symfony doctrine-orm postgis postgresql-9.2

我有一个安装了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)。

我能否以某种方式限制学说只分析公共计划并跳过其他计划?

1 个答案:

答案 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如果在共享环境中使用数据库,可能会收紧一些权限。