Installing PowerDNS With MySQL On CentOS

What is PowerDNS?

PowerDNS is a MySQL-based DNS server, written in C++ and licensed under the GPL. PowerDNS can be managed through a web interface (PowerAdmin). This guide shows how to install it on CentOS.

 

1. Installing MySQL

[[email protected] ~]# yum -y install mysql mysql-server

 

[[email protected] ~]# chkconfig --levels 235 mysqld on
[[email protected] ~]# service mysqld start

 

3. Check if MySQL is running

[[email protected] ~]# netstat -tap | grep mysql
tcp        0      0 *:mysql                 *:*     LISTEN   28179/mysqld 

 

4. Set password for user root

[[email protected] ~]# mysqladmin -u root password password123

 

5. Install PowerDNS

[[email protected] ~]# yum -y install pdns pdns-backend-mysql

 

6. Setting database

[[email protected] ~]# mysql -u root -p
mysql> CREATE DATABASE powerdns;
mysql> user powerdns;

mysql> CREATE TABLE domains (
-> id INT auto_increment,
-> name VARCHAR(255) NOT NULL,
-> master VARCHAR(128) DEFAULT NULL,
-> last_check INT DEFAULT NULL,
-> type VARCHAR(6) NOT NULL,
-> notified_serial INT DEFAULT NULL,
-> account VARCHAR(40) DEFAULT NULL,
-> primary key (id)
-> );

mysql> CREATE UNIQUE INDEX name_index ON domains(name);

mysql> CREATE TABLE records (
-> id INT auto_increment,
-> domain_id INT DEFAULT NULL,
-> name VARCHAR(255) DEFAULT NULL,
-> type VARCHAR(6) DEFAULT NULL,
-> content VARCHAR(255) DEFAULT NULL,
-> ttl INT DEFAULT NULL,
-> prio INT DEFAULT NULL,
-> change_date INT DEFAULT NULL,
-> primary key(id)
-> );

mysql> CREATE INDEX rec_name_index ON records(name);
mysql> CREATE INDEX nametype_index ON records(name,type);
mysql> CREATE INDEX domain_id ON records(domain_id);

mysql> CREATE TABLE supermasters (
-> ip VARCHAR(25) NOT NULL,
-> nameserver VARCHAR(255) NOT NULL,
-> account VARCHAR(40) DEFAULT NULL
-> );

mysql> quit;
[[email protected] ~]# nano /etc/pdns/pdns.conf
#################################
# launch Which backends to launch and order to query them in
#
# launch=

launch=gmysql

gmysql-host=192.200.200.1

gmysql-user=power_admin

gmysql-password=password123

gmysql-dbname=powerdns

#################################

 

[[email protected] ~]# chkconfig --levels 235 pdns on
[[email protected] ~]# service pdns start

 

8. Preparing the system for PowerAdmin installation

[[email protected] ~]# yum -y install httpd php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-mbstring php-mcrypt php-mhash gettext

 

9. Create system startup links for apache and start it

[[email protected] ~]# chkconfig --levels 235 httpd on
[[email protected] ~]# service httpd start

 

10. Install following two PEAR packages

yum -y install php-pear-DB php-pear-MDB2-Driver-mysql

 

11. Download PowerAdmin

[[email protected] ~]# wget https://www.poweradmin.org/download/poweradmin-2.1.2.tgz
[[email protected] ~]# tar zxvf poweradmin-2.1.2.tgz -C /var/www/html/
[[email protected] ~]# mv poweradmin-2.1.2 poweradmin
[[email protected] ~]# mv /var/www/html/poweradmin/inc/config.inc.php
[[email protected] ~]# chown -R apache:apache /var/www/html/poweradmin/
Share this page:

Suggested articles

7 Comment(s)

Add comment

Comments

By: Anonymous

Hello

Are you also able to create a howto on setting up a secondary name server, no one seems to be doing those.

 

A secondary slave name server that gets its records from the primary powerdns name server

By:

I have create tutorial for dns slave, check this link

https://www.howtoforge.com/installation-of-bind-as-a-secondary-slave-dns-server-on-centos

 let me know if you have problem again, thank you.

 Rhesa.

By: Glen Lumanau

as I read the documentation of PowerDNS, PowerDNS using mysql replication for master/slave configuration. CMIIW 

By: K. Larsen

Wouldn't you just setup MySQL to replicate the DB and/or point the new PowerDNS to the same MySQL server.

I would probably setup 2 MySQL servers which replicate the DB, either as A/S or A/A and then point the PowerDNS servers accordingly.

By: Frank

Hi,

first of al a big thank you for offering this description.

I think I found two mistakes:

1) The third action in paragraph 6 is:

mysql> user powerdns;

This results in a sql-error - I think the line should be:
mysql> use powerdns;

2) In paragraph 11 the forth action is:

[[email protected] ~]# mv /var/www/html/poweradmin/inc/config.inc.php

This makes no sense and ends into an os-error - is there probably missing a dot?

Finally I do habe problems with paragraph 10. I get the following error messages:

Running Transaction
Installing : php-pear-MDB2 1/3
/tmp/glibctestsbd3OB:1:22: Fehler: features.h: Datei oder Verzeichnis nicht gefunden
Installing : php-pear-MDB2-Driver-mysql 2/3
/tmp/glibctestCeKuaK:1:22: Fehler: features.h: Datei oder Verzeichnis nicht gefunden
Installing : php-pear-DB 3/3
/tmp/glibctestzGj560:1:22: Fehler: features.h: Datei oder Verzeichnis nicht gefunden

What do I need to do to avoid them?

And a last question - I should see apache at the servers ip, right? In fact I don't ...

Best regards,
Frank

By: Anonymous

In paragraph 6. There's edited pdns.conf with mysql connection settings, but there's not told what user to use. Power_admin user is not created, should we use root? Also host is something from your own config. I know what to use and do, but someone else could be lost.

There's also other error in paragraph 11. It says "mv poweradmin-2.1.2 poweradmin", but poweradmin is unpacked under /var/www/html so you're in wrong directory. Needed to be "mv /var/www/html/poweradmin-2.1.2 /var/www/html/poweradmin"

Poweradmin also needed to be installed through browser. So at the end, go to http://your-ip-address/poweradmin/install and follow the instructions

 

By: akshay

Hello,

On my server, I am facing an issue with a CPU load of 92% and my traffic has increased to 7Mbits/s due to which there is no response from PowerDNS.

Need urgent help.