Я использую PowerDNS уже несколько лет и наконец решил перейти на pgSQL вместо mySQL. Я исследовал этот вопрос, но не нашел ничего надежного, поэтому предполагаю, что это, вероятно, невозможно.
Мне любопытно, можно ли установить и запустить PowerDNS из схемы под названием pdns
вместо базы данных с именем pdns
? Я не могу найти ни одной опции, чтобы указать PowerDNS искать в базе данных X и схеме Y.
Например, у меня есть база данных под названием example
и в этой базе данных у меня есть две схемы, называемые mydb
и pdns
. Я хочу установить структуру таблицы PowerDNS в pdns
схему, а затем запустите службу PowerDNS из этой схемы. Кажется, все работает нормально, когда таблицы находятся в public
схема.
Это проще всего сделать, изменив путь поиска роли.
Создайте новую схему 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 указанной выше команды .. (если они существуют)