我有一个安装了 PostGIS 扩展的 PostgreSQL 数据库。它有 3 个其他模式(tiger、tiger_data、topology)和 public。我的表应该在公共(public)架构中,但现在我无法运行 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)。
我能否以某种方式限制该学说以仅分析公共(public)计划并跳过其他计划?
最佳答案
在 super 用户创建扩展后,您可以将所需模式的权限授予默认用户。
-- 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如果您在共享环境中使用数据库,则可能会收紧某些权限。
关于php - Doctrine2 PostgreSQL 架构限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24407512/