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