Page tree
Skip to end of metadata
Go to start of metadata

The instruction vary for different OSes. The instructions for the following OSes can be found in this document.

  • CentOS 6 x86_64
  • CentOS 7 x86_64

CentOS 6 x86_64:

1. Enable epel repository using the instruction from here: http://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F

2. Install PowerDNS and MySQL

yum -y install mysql mysql-server pdns pdns-backend-mysql
chkconfig --levels 235 mysqld on
chkconfig --levels 235 pdns on
service mysqld start

3. Set a MySQL root password

mysqladmin -u root password MYNEWPASSWORD

4. Download the PowerDNS SQL and import it

wget http://files.soluslabs.com/solusvm/pdns/pdns.sql
mysql --user=root --password=MYNEWPASSWORD < pdns.sql

5. Edit /etc/pdns/pdns.conf with your database details:

launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=root
gmysql-password=MYNEWPASSWORD
gmysql-dbname=powerdns  

6. To give permission for the MySQL user to connect from your SolusVM master, use following:

mysql -u root -p
  • After entering the password use following:
GRANT ALL ON powerdns.* TO 'root'@'YOUR_SOLUSVM_MASTERS_IP' IDENTIFIED BY 'MYNEWPASSWORD';
FLUSH PRIVILEGES;

7. Start PowerDNS:

/etc/init.d/pdns start
  • To do a monitored start, use following:

/etc/init.d/pdns monitor


CentOS 7 x86_64:

1. Enable epel repository using the instruction from here: http://fedoraproject.org/wiki/EPEL#How_can_I_use_these_extra_packages.3F

2. Install PowerDNS and MySQL

yum -y install mariadb mariadb-server pdns pdns-backend-mysql
systemctl enable mariadb
systemctl enable pdns
systemctl start mariadb

3. Set a MySQL root password

mysqladmin -u root password MYNEWPASSWORD

4. On CentOS 7 pdns 4.0.6 is installed by default and in this version powerdns database is different from the one in version 3.X.
Create a file pdns.sql with the below content and import it:

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,
  solusvm_cid           int(11) DEFAULT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX name_index ON domains(name);


CREATE TABLE records (
  id                    INT AUTO_INCREMENT,
  domain_id             INT DEFAULT NULL,
  name                  VARCHAR(255) DEFAULT NULL,
  type                  VARCHAR(10) DEFAULT NULL,
  content               VARCHAR(64000) DEFAULT NULL,
  ttl                   INT DEFAULT NULL,
  prio                  INT DEFAULT NULL,
  change_date           INT DEFAULT NULL,
  disabled              TINYINT(1) DEFAULT 0,
  ordername             VARCHAR(255) BINARY DEFAULT NULL,
  auth                  TINYINT(1) DEFAULT 1,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX nametype_index ON records(name,type);
CREATE INDEX domain_id ON records(domain_id);
CREATE INDEX recordorder ON records (domain_id, ordername);


CREATE TABLE supermasters (
  ip                    VARCHAR(64) NOT NULL,
  nameserver            VARCHAR(255) NOT NULL,
  account               VARCHAR(40) NOT NULL,
  PRIMARY KEY (ip, nameserver)
) Engine=InnoDB;


CREATE TABLE comments (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  name                  VARCHAR(255) NOT NULL,
  type                  VARCHAR(10) NOT NULL,
  modified_at           INT NOT NULL,
  account               VARCHAR(40) NOT NULL,
  comment               VARCHAR(64000) NOT NULL,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX comments_domain_id_idx ON comments (domain_id);
CREATE INDEX comments_name_type_idx ON comments (name, type);
CREATE INDEX comments_order_idx ON comments (domain_id, modified_at);


CREATE TABLE domainmetadata (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  kind                  VARCHAR(32),
  content               TEXT,
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind);


CREATE TABLE cryptokeys (
  id                    INT AUTO_INCREMENT,
  domain_id             INT NOT NULL,
  flags                 INT NOT NULL,
  active                BOOL,
  content               TEXT,
  PRIMARY KEY(id)
) Engine=InnoDB;

CREATE INDEX domainidindex ON cryptokeys(domain_id);


CREATE TABLE tsigkeys (
  id                    INT AUTO_INCREMENT,
  name                  VARCHAR(255),
  algorithm             VARCHAR(50),
  secret                VARCHAR(255),
  PRIMARY KEY (id)
) Engine=InnoDB;

CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm);
mysql --user=root --password=MYNEWPASSWORD -e"create database powerdns"
mysql --user=root --password=MYNEWPASSWORD powerdns < pdns.sql

5. Edit /etc/pdns/pdns.conf with your database details:

launch=gmysql
gmysql-host=127.0.0.1
gmysql-user=root
gmysql-password=MYNEWPASSWORD
gmysql-dbname=powerdns  

6. To give permission for the MySQL user to connect from your SolusVM master, use following:

mysql -u root -p
  • After entering the password use following:
GRANT ALL ON powerdns.* TO 'root'@'YOUR_SOLUSVM_MASTERS_IP' IDENTIFIED BY 'MYNEWPASSWORD';
FLUSH PRIVILEGES;

7. Start PowerDNS:

systemctl start pdns



  • No labels