mysql数据库增加模块_使用bind-mysql模块增加对mysql数据库的支持

对于bind,如果想修改或增加dns记录,是直接修改文本的,这样的话一方面不方面管理,另一方面容易出错,如果我们增加对mysql数据库的支持,再配合php或perl,python等程序直接操作mysql,这对于dns的管理将会非常的方面和不易出错。现在介绍使用mysql bind驱动模块实现这一功能。

一、安装mysql

安装mysql服务器可以使用yum或源码编译安装,我们这里使用yum安装。

yum -y install mysql mysql-server mysql-devel

二、安装bind和mysql-bind

1、分别下载bind和mysql-bind

cd /tmp

wget http://nchc.dl.sourceforge.net/project/mysql-bind/mysql-bind/mysql-bind-0.2%20src/mysql-bind.tar.gz

wget http://ftp.isc.org/isc/bind9/cur/9.9/bind-9.9.1-P2.tar.gz

tar xzf bind-9.9.1-P2.tar.gz

tar xzf mysql-bind.tar.gz

2、分别复制mysql-bind的mysqldb.c和mysqldb.h到bind-9.9.1-P2/bin/named和bind-9.9.1-P2/bin/named/include

cd /tmp/mysql-bind

cp mysqldb.c mysqldb.h /tmp/bind-9.9.1-P2/bin/named

cp mysqldb.c mysqldb.h /tmp/bind-9.9.1-P2/bin/named/include

3、修改bind源码中的bin/named/Makefile.in文件:

DBDRIVER_OBJS = mysqldb.@O@

DBDRIVER_SRCS = mysqldb.c

DBDRIVER_INCLUDES = -I/usr/include/mysql  -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector –param=ssp-buffer-size=4 -m32 -fasynchronous-unwind-tables -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE_SOURCE -fno-strict-aliasing -fwrapv

DBDRIVER_LIBS = -rdynamic -L/usr/lib/mysql -lmysqlclient -lz -lcrypt -lnsl -lm -L/usr/lib -lssl -lcrypto

注:

DBDRIVER_INCLUDES的值由命令/usr/bin/mysql_config –cflags获得。

DBDRIVER_LIBS的值由命令/usr/bin/mysql_config –libs获得。

4、编辑bind源文件bin/named/main.c

4.1、包含mysqldb.h

在#include 后面增加#include

4.2、在函数setup(void)里面ns_server_create()的前面添加mysqldb_init(),如

/*

* Add calls to register sdb drivers here.

*/

/* xxdb_init(); */

mysqldb_init();

ns_server_create(ns_g_mctx, &ns_g_server);

4.3、在函数cleanup(void)里面ns_server_destroy()的后面添加mysqldb_clear(),如

ns_server_destroy(&ns_g_server);

mysqldb_clear();

/*

* Add calls to unregister sdb drivers here.

*/

/* xxdb_clear(); */

4.4、编辑bind源文件中的bin/named/mysqldb.c文件:

更改#include 为#include "include/mysqldb.h"

4.5 安装bind

yum -y install gcc openssl-devel

cd /tmp/bind-9.9.1-P2

./configure –prefix=/usr/local/bind  –disable-openssl-version-check

make && make install

三、mysql配置

启动:service mysqld start

设置root密码:mysqladmin -uroot password root

创建数据库:mysql> create database dns;

创建表:   mysql> CREATE TABLE mydomain (

name varchar(255) default NULL,

ttl int(11) default NULL,

rdtype varchar(255) default NULL,

rdata varchar(255) default NULL

) TYPE=MyISAM;

插入数据示例:

INSERT INTO mydomain VALUES (‘mydomain.com’, 259200, ‘SOA’, ‘mydomain.com. www.mydomain.com. 200309181 28800 7200 86400 28800’);

INSERT INTO mydomain VALUES (‘mydomain.com’, 259200, ‘NS’, ‘ns0.mydomain.com.’);

INSERT INTO mydomain VALUES (‘mydomain.com’, 259200, ‘NS’, ‘ns1.mydomain.com.’);

INSERT INTO mydomain VALUES (‘mydomain.com’, 259200, ‘MX’, ’10 mail.mydomain.com.’);

INSERT INTO mydomain VALUES (‘w0.mydomain.com’, 259200, ‘A’, ‘192.168.1.1’);

INSERT INTO mydomain VALUES (‘w1.mydomain.com’, 259200, ‘A’, ‘192.168.1.2’);

INSERT INTO mydomain VALUES (‘mydomain.com’, 259200, ‘Cname’, ‘w0.mydomain.com.’);

INSERT INTO mydomain VALUES (‘mail.mydomain.com’, 259200, ‘Cname’, ‘w0.mydomain.com.’);

INSERT INTO mydomain VALUES (‘ns0.mydomain.com’, 259200, ‘Cname’, ‘w0.mydomain.com.’);

INSERT INTO mydomain VALUES (‘ns1.mydomain.com’, 259200, ‘Cname’, ‘w1.mydomain.com.’);

INSERT INTO mydomain VALUES (‘www.mydomain.com’, 259200, ‘Cname’, ‘w0.mydomain.com.’);

INSERT INTO mydomain VALUES (‘ftp.mydomain.com’, 259200, ‘Cname’, ‘w0.mydomain.com.’);

四、bind配置

zone "mydomain.com" {

type master;

notify no;

database "mysqldb dbname tablename hostname user password";

};

其中dbname是数据库名,tablename是表名,hostname是mysql主机,然后就是用户名和密码

启动bind:

/usr/local/bind/sbin/named

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值