第三课、配置数据库服务
??如果您不需要数据库服务可以略过本课,但是后面的课程中相当部分和本课有关,所以即使不打算配置数据库服务,也应该看看本课的内容。
??MySQL数据库是目前最受欢迎的免费数据库,由于具有优异的效率和简洁的控制方式,所以被众多的服务商采用。尽管它还有一些不足,例如不支持事务和子选择,但这些缺陷可以通过编程解决。
??在本手册开始写作的时候,MySQL的最新稳定版本是3.23.32,还没有OpenBSD的port(OpenBSD中的每一个应用都是一个port),所以我们在手册光盘中包含了它的源代码包,并写作了本课以教导您如何在OpenBSD下面编译并安装MySQL。
第一节、展开MySQL源代码包
??首先需要让系统可以读取光盘(因为源代码包在光盘里面啊!),方法非常简单,只需执行以下的命令即可:
mount /dev/cd0c /mnt
??然后转入/usr/src目录,把MySQL-3.23.32的源代码包解压
cd /usr/src
tar zxvf /mnt/packages/mysql-3.23.32.tar.gz
??这样,在/usr/src目录下面就会有一个名为mysql-3.23.32的目录,里面就是MySQL-3.23.32的源代码。为了继续后面的工作,我们需要进入该目录。
cd mysql-3.23.32
第二节、为MySQL服务程序建立所需的组和用户
??要正确编译和安装MySQL数据库服务程序,需要建立mysql组和属于mysql组的mysql用户。在以后运行MySQL数据库服务程序的时候同样需要它们,建立的方法如下:
groupadd mysql
useradd –g mysql mysql
第三节、运行配置程序
??因为要编译源代码必须先获得和系统相关的信息,包括编译器版本,系统支持的线程方式(OpenBSD是一个支持多线程的系统)等。因此需要运行配置程序以获取这些信息。
./configure --prefix=/usr/local \
--localstatedir=/var/mysql \
--with-low-memory \
--without-bench \
--without-debug
??我们解释一下配置程序里面各行的含义。./configure就是要执行的配置程序了;--prefix=/usr/local表示,编译后的MySQL数据库服务程序将会安装到/usr/local/bin目录当中,而库文件会安装到/usr/local/lib/mysql目录中,头文件将安装到/usr/local/include目录中;--localstatedir=/var/mysql表示数据库所用到的数据将会安装到/var/mysql目录中(我们在安装OpenBSD的时候提到如果需要,可以为/var/mysql建立一个独立的分区就是这个原因,这样可以方便管理);--with-low-memory这一句至关重要,没有了它,基本上就不要指望在您的机器上面通过编译,除非您拥有超过1Gb的内存,这句会指导编译程序使用交换分区作为虚拟内存;--without-bench和—without-debug告诉编译器和安装脚本不需要测试程序和调试信息。
??好了,解释得够清楚吗?
第四节、编译和安装MySQL
??这个步骤非常简单,只需要执行下面的命令即可,其他得事情由电脑来完成。因为编译的过程非常久,可以喝杯水歇一歇。
make
make install
make init-db
第五节、测试MySQL
??对不起,本节的标题有点含糊。这里的测试是指测试MySQL的编译和安装是否正常。为了测试MySQL是否被正确编译和安装,需要执行以下的命令:
/usr/local/bin/safe_mysqld > /dev/null &
/usr/local/bin/mysqladmin –u root password ‘123456’
??如果第二条命令无声无息地结束了,那么就证明MySQL可以正常使用了。对了,第二条命令其实是更改系统管理员的口令啊!那么您知道以后使用MySQL程序的时候需要的口令了吗?
第六节、让MySQL在系统启动的时候自动启动
??我们需要做一些工作来让MySQL在系统启动的时候自动启动。首先我们修改/etc/rc.conf文件,添加以下的行:
mysqld_flags=””
??然后,需要修改/etc/rc文件,找到启动named的代码(第171行),添加以下的代码:
if [ “X${mysqld_flags}” != X”NO” ]; then
echo ‘starting mysqld’
/usr/local/bin/safe_mysqld > /dev/null &
fi
??另外,为了让其他需要用到MySQL的程序编译可以顺利通过,就需要在/etc/rc.local文件中添加以下的代码:
if [ “X${mysqld_flags}” != X”NO” ]; then
/sbin/ldconfig –m /usr/local/lib/mysql
fi