我已经使用PowerDNS几年了,最后决定切换到pgSQL而不是mySQL。 我一直在研究这个问题,但我没有发现任何坚实的东西,所以我认为这可能是不可能的。
我很好奇,如果可以从称为pdns
的模式而不是称为pdns
的数据库安装和运行PowerDNS? 我无法find任何告诉PowerDNS查看X数据库和Y模式的选项。
例如,我有一个名为example
的数据库,在这个数据库中有两个模式叫做mydb
和pdns
。 我想在pdns
模式中安装PowerDNS表结构,然后从该模式运行PowerDNS服务。 当表处于public
模式时,似乎工作得很好。
这很容易通过改变angular色的searchpath来完成。
在目标数据库中创build一个新的模式pdns。 在该模式中创build所需的所有表。 当您创buildpdnsangular色(用户)时,请将其searchpath设置为在public之前search您的pdns模式。 将pdns模式的访问权授予pdnsangular色。
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.recordsreplace“blah-records”
如果这不起作用,那么你唯一的select是编写一个包装来重写postgres查询。 (可能更多的工作比值得)。 你所要求的是不被支持的,简短的回答是: 不应该这样做
PS:你自己find上述命令的postgres等价物(如果它们存在的话)