В Oracle есть суперпользователь. Через него создаются новые пользователи с определенными ролями. Каждой роли определяются разрешения на select, insert, update, delete, execute на соответствующие объекты. Хотелось бы узнать как правильно это перенести в postgrsql. Просьба не пинать ногами - так как очень долго работал на oracle (c 6 версии), а postgres только поставил и немного посмотрел статьи по нему.
Вы удивитесь, но в PostgreSQL
Вы удивитесь, но в PostgreSQL есть суперпользователь postgres. Через него создаются новые пользователи с определенными ролями. Каждой роли определяются разрешения на select, insert, update, delete, execute на соответствующие объекты (и не только). Перенести очень просто - выгружаете из Oracle задание прав в виде SQL-операторов GRANT и выполняете эти же операторы в PostgreSQL. Если синтаксис будет стандартным (см. стандарт на SQL, который поддерживает PostgreSQL), то вероятно и менять-то ничего не надо будет. Если нестандартным, надо адаптировать этот синтаксис, что в общем-то совсем нетрудно.
Спасибо за ответ,
Спасибо за ответ, Но...
Собственно говоря меня смутило вот это: Также как в оракле - CREATE USER, но в постгресс это алиас для CREATE ROLE. Роль=Юзер. Вот такая херь. Пользователь создается не для базы, а для всего кластера (это из PostgreSQL для Oracle разработчика. Краткий FAQ. ) В oracle user - это схема.
Алиас вас пугать не должен,
Алиас вас пугать не должен, ведь CREATE USER тоже работает.
Да, у PostgreSQL так же как и у MySQL и многих других СУБД, пользователи и базы - это разные сущности. Один и тот же пользователь может иметь разные права доступа к разным БД и это правильно. Схемы в PostgreSQL тоже есть, но это сущности внутри БД, а к пользователям они имеют только то отношение, что пользователю можно задать права доступа для определённых схем.
Однако, я не вижу препятствий в переходе, если вы чётко представляете чего же вы хотите.
Попробую на пальцах: (в
Попробую на пальцах: (в терминах Oracle)
1 Создается схема с данными и всем необходимым (еще система логирования, но об этом потом)
2. Создается Пользователь, например бухгалтер (его схема пуста)
3. За счет системы раздачи грантов и синонимов получает доступ только к, необходимым для решения его задач, объектам главной схемы
4. Для главного бухгалтера может быть расширен список объектов (таблиц, процедур и т.д)
Т.е. хотелось бы увидеть это в коде postgres (например м.б. вместо создания пользователя нужно создавать бд и т.д.)
Я не являюсь специалистом в
Я не являюсь специалистом в Oracle, но мне видится, что вам нужно просто уложить в голове отличия, т.е. создать параллели понятий между Oracle и PostgreSQL.
Смотрите.
В PostgreSQL у вас будет ОДНА база данных.
Внутри этой базы возможно наличие схем. Оно необязательно, но возможно. Схема - это нейкий namespace - ничего более. Если вам непонятно, что такое namespace, то представьте себе, что БД - это каталог, в схемы - это подкаталоги в нём. Т.е. по большому счёту, схема нужна для возможности создавать таблицы с одинаковыми именами внутри одной БД, используя разные схемы. Подробности тут:
http://postgresql.ru.net/manual/ddl-schemas.html
Но в том, что вы написали я не вижу необходимости в создании схем. Просто создавайте нужную структуру в ОДНОЙ БД, пользователей и (как шаблоны) роли, раздавайте им права к таблицам в зависимости от функционала решаемых ими задач и всё. Т.е. про схемы можете забыть.
Спасибо!
Спасибо!