php - Doctrine2 PostgreSQL 架构限制

标签 php symfony doctrine-orm postgis postgresql-9.2

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

相关文章:

php - 为什么常见的 PHP 框架使用中央核心?

php - 使用 curl 下载 flurry 事件日志

php - symfony2 该网页有一个重定向循环

php - Doctrine DQL 加入可空列

symfony - 无法在 Symfony2 中启用 SoftDeleteable - 无法识别的选项 "filters"

php - Zend Framework 2 + Doctrine 2

php - Lucene 中的多术语通配符查询?

php - 解决 PHP 内存泄漏

Symfony 2 批量操作的表单名称?

symfony - 基于另一个(postPersist)Doctrine2的创建创建一个新实体