Назад | Перейти на главную страницу

PowerDNS pgSQL Настроить другую схему

Я использую 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 указанной выше команды .. (если они существуют)