Это проще всего сделать, изменив путь поиска роли.
Создайте новый pdns схемы в целевой базе данных. Создайте все необходимые таблицы в этой схеме. Когда вы создаете роль pdns (пользователя), установите для них путь поиска для поиска вашей схемы pdns перед общедоступной. Предоставьте доступ к схеме pdns роли pdns.
create schema pdns;
# create your tables as pdns.tablename
create role pdns with password 'yourpassword';
alter role pdns set search_path = "$user",pdns,public;
grant usage on schema pdns to pdns;
grant select,insert,update,delete on all tables in schema pdns to pdns;
grant select,update on all sequences in schema pdns to pdns;
Если вы отмените любой доступ pdns, который может иметь к другим таблицам, вам не нужно слишком беспокоиться о разделении. Это должно сделать это.
Изменить: Примечание; если вы новичок в postgres, вы можете не знать, что, хотя вы можете предоставить доступ ко всем таблицам в схеме, если вы добавляете или повторно добавляете таблицу, вы должны предоставить доступ к новой таблице (повторно запустив команду grant ). Вот почему гранты в этом ответе последние.
http://mailman.powerdns.com/pipermail/pdns-users/2005-July/ 002524.html
Как и на этом сайте, это может быть возможно с помощью некоторого "взлома"
you can fake this by redefining all gmysql queries. Extract
the current queries like this:
$ /usr/sbin/pdns_server --launch=gmysql --config 2>&1 | grep -i gmysql | grep query=
And change all instances of 'records' by 'blah-records', and insert this in
your configuration.
. Вы замените 'blah-records' на pdns.records
Если это не сработает, тогда ваш единственный вариант - написать оболочку для перезаписи запросов postgres на лету. (Наверное, работы больше, чем стоит). То, о чем вы просите, не поддерживается, и краткий ответ: Этого не следует делать
ps: вы сами можете найти эквиваленты postgres указанной выше команды ..