如果只需要运行mysql客户机软件,而不打算运行mysql服务器,可以跳过这一节。 mysql服务器可作为系统上的任何unix 用户运行,但出于安全和保密的原因,最好是不以root 身份运行服务器。建议创建一个独立的账号用于mysql管理,并以该用户运行服务器。这样,可作为该用户登录,并在进行维护和故障排除的目录中具有完全的权限。创建 用户账号的过程随系统的不同而不同。详细内容可参阅相应的文献。 本书将mysqla d m和mysqlg r p分别用于unix 用户和此账号的组名。如果打算安装mysql只为自己使用,可以自己运行它,那么在本书中任何地方出现的mysqladm 和mysqlg r p都可换成您自己的登录名和组名。如果从rpm 文件进行安装,随rpm 的安装过程会自动建立一个名为mysql的用户。在这样的情况下,可以将mysql替换成mysqla d m。 使用独立、无特权帐户而不是运行mysql的r o o t,其优点为: 如果不以root 运行mysql,任何人都不能利用此服务器的安全漏洞获得root 访问。 无特权的用户执行mysql管理任务比用root 执行更为安全。 服务器将创建mysqladm 而非root 拥有的文件。r o o t在系统上拥有的文件越少越好。 将mysql的活动分隔在它自己的账号中可以在概念上更为清晰,并且更容易看出系统上什么东西与mysql相关。例如,在保存core 文件的目录中,有mysql用户mysqladm 的一个独立文件。否则mysql的corn 作业将位于root 的文件中,将会和其他东西一起作为root 周期性的执行。
获得和安装mysql分发包
在下面的说明中,我们用版本代表mysql的版本号,用平台代表在其上进行安装的平台名。它们也用在分发包文件名中,以便容易标识分发包,并将各个分发包区分开来。版本号是一些类似于3.22.26 或3.23.4-alpha 这样的东西,平台名是类似于sgi-irix6.3-mips 或d e c -osf4-0b-alpha 这样的东西。 1. 安装二进制代码分发包 二进制代码分发包文件具有诸如m s q l -ver s i o n - p l a t f o r m. t a r.gz 这样的名字。获得理想版本和平台的分发包文件并将它放入指定的安装mysql目录,如/ us r / l o c a l。 用下面的任意一条命令打开分发包(如果tar 版本不支持非压缩分发包的z 选项,应该使用第二条命令): % tar zxf mysql-version-platform.tar.gz % gunzip < mysql-version-platfrom.tar.gz | tar xf 打开分发包创建包含分发包内容的目录mysql-ver s i o n - p l a t f o r m。为了更容易引用这个目录,可创建一个符号连接: % ln -s mysql-version-platorm mysql 现在,如果在/usr/local 目录下安装mysql,可引用的安装目录为/ us r / l o c a l / mysql。 如果只准备使用分发包所提供的客户机支持环境并且不运行服务器,则安装结束。如果是第一次安装mysql,可参阅a . 3 . 4节“初始化数据目录和权限表”。如果是对已有安装进行更新,可参阅a . 3 . 5节“启动服务器”。 2. 安装rpm 分发包 rpm 文件可用于linux 系统上的mysql安装。它们具有如下的文件名: mysql-ver s i o n - p l a t f o r m.rpm 服务器软件。 mysql- c l i e n t. ver s i o n - p l a t f o r m.rpm 客户机程序。 mysql- d e v e l .ver s i o n - p l a t f o r m.rpm 编写客户机程序的开发支持环境(客户机库和头文件)。如果想使用或编写访问mysql数据库的perl dbi 脚本,则需要用到它。 mysql- b e n c h. ver s i o n - p l a t f o r m.rpm 标准和测试。需要perl 和msql-mysql-modules 模块。可在w w w.mysql.com 上得到mysql-mysql-modules 的一个rpm 文件。 mysql-ver s i o n .src.rpm 服务器、客户机、标准和测试的源代码。 如果从rpm 安装,不需要特定的目录,因为rpm 文件含有指定将所包含的文件安装在何处的信息。对任何rpm 文件r p m _ f i l e,可用下列命令知道其内容将安装在何处: % rpm -qpl rpm_file 为了安装一个rpm 文件,使用下列命令: % rpm -i rpm_file mysql的各组成部分被划分为不同的rpm 文件,因此可能需要安装不止一个r p m。为了安装客户机支持环境,可使用下列命令: % rpm -i mysql-client-version-platform.rpm 安装服务器支持环境,使用下列命令: % rpm -i mysql-version-platform.rpm 如果打算使用客户机编程支持环境编写自己的程序,应该安装供开发用的rpm 文件: % rpm -i mysql-devel-version-platform.rpm 如果打算使用分发包提供的客户机支持环境,而且不准备使用服务器, mysql的安装就结束了。如果是第一次安装mysql,可参阅a . 3 . 4节“初始化数据目录和权限表”。如果是对现有安装进行更新,可参阅a . 3 . 5节“启动服务器”。 如果想从源代码rpm 文件进行安装,用下面的命令就可以了: % rpm --recompile mysql-version.src.rpm 3. 安装源代码分发包 源代码分发包具有如mysql- ver s i o n . t a r.gz 这样的名称,其中version 为mysql的版本号。选择想要将分发包放在其下的目录,并进入该目录。获得分发包文件并用下列命令之一打开它(如果tar 版本不支持非压缩分发包的z 选项,应该使用第二条命令): % tar zxf mysql-version.tar.gz % gunzip < mysql-version.tar.gz | tar xf 打开分发包创建包含分发包内容的目录mysql- ver s i o n,并进入此目录。 % cd mysql-version 在安装以前,需要配置和编译此分发包。如果各步骤失败,应该参阅mysql参考指南的“安装mysql”一章,应该特别注意它所包含的有关各种机器专有的系统说明。 使用configure 命令配置分发包: % ./configure 可以为configure 指定选项。为了得到可用的选项表,执行下列命令: % ./configure --help 下面的清单给出了一些许多人认为很有用的配置选项: ·--without-server 只建立客户机支持环境的配置(客户机程序或客户机库)。如果打算访问运行在其他机器上的服务器,应该选择此选项。 ·--prefix = p a t h _ name 缺省时,安装根目录为/ us r / l o c a l。数据目录、客户机、服务器、客户机库以及头文件安装在根目录下的v a r、b i n、l i b e x e c、lib 和include 目录中。如果想要更改安装的根目录,使用--prefix 选项即可。 ·--localstatedir = p a t h _ name 这个选项更改数据目录的位置。如果不希望将数据库保存在/usr/local/var 之下,可使用这个选项。 ·--with-low-memory sql/sql_yacc.cc 源代码文件需要大量编译内存,这有时会导致安装失败。这个问题的表现包括有关“ fatal signal 11”或虚内存耗尽错误消息。- - w i t h - l o w - memory 选项用产生低内存消耗的选项来调用编译程序。 在执行了configure 后,编译分发包并安装它: % make % make install 如果未利用--prefix 选项指定具有写入许可的目录,需要以root 身份执行安装命令。 如果只准备使用分发包所提供的客户机支持环境且不运行服务器,则mysql的安装结束。如果是第一次安装mysql,可参阅a . 3 . 4节。如果是对已有安装进行更新,可参阅a . 3 . 5 节“启动服务器”。
初始化数据目录和权限表
在能够利用mysql安装之前,需要初始化含有控制网络对服务器进行访问的权限表的mysql数据库。这个步骤只在新安装以及打算运行服务器时需要。那些只进行客户机支持环境安装的人员可以跳过这一节。对于二进制代码分发包,从安装目录(由分发包创建的b i n 目录的父级目录)执行命令。对于源代码分发包,从分发包的高层目录执行命令。 data d i r 是数据目录的路径名。一般情况下,作为root 执行下列命令。如果作为mysqladm 登录,或者由于打算自己运行mysql而在自己的账号下安装它,则可不以r o o t的身份执行命令,而且可以跳过chown 和chmod 命令。 如下运行mysql_install_db 脚本设置缺省权限表(如果利用rmp 文件进行安装,则不需要这样做,因为mysql_install_db 将会自动运行): # scripts/mysql_install_db 如果mysql_install_db 失败,应该参阅mysql参考指南的“安装mysql”一章,看看该章对于所遇到的问题是怎么说的,然后再试一次。注意,如果mysql_install_db 未成功完成,它所建立的任意权限表可能都是不完整的。应该删除它们,因为mysql_install_db 不会试图重建已经存在的表。可用如下语句删除整个mysql数据库。 # rm -rf datadir/mysql 在运行mysql_install_db 之后,如果所安装的是mysql3.22.10 以前的版本,应该关闭服务器(对于更新的版本, mysql_install_db 会自动完成这项工作): # bin/mysqladmin --user=root shutdown 在服务器关闭后,更改用户和组的拥有者该数据目录下的所有文件模式: # chown -r mysqladm.mysqlgrp datadir # chmod -r go-rwx datadir chown 命令更改mysql用户的拥有者,而chmod 更改模式把除mysqladm 外的所有人员都排斥在外。
启动服务器
这个步骤只在要运行服务器时需要。那些只需要客户机的安装可以跳过这一步。应该在前一节给出的相同目录中执行本节的命令。一般作为root 用户运行命令。如果作为mysqla d m用户登录,或者在自己的账号下安装mysql,那么可以不以r o o t身份运行命令,而且应该省略--user 选项。 用下列命令启动服务器: # bin/safe_mysqld --user=mysqladm & --user 选项告诉服务器作为mysqladm 运行。如果想启用日志,使用下列命令: # bin/safe_mysqld--user=mysqladm --log & 缺省的安装允许mysqlroot 用户不用口令进行连接。设口令是个好主意。还应该在系统启动和关闭时,安排服务器启动和关闭。此外,推荐使用更新日志,因为这对数据恢复过程是很有用的。对于完成这些活动的说明,请参阅第11章。
安装perl dbi 支持环境
如果想要编写访问mysql数据库的perl 脚本,应该安装dbi 软件。dbi 要求已经安装过mysql客户机编程支持环境,因为它要使用mysqlc 客户机库。如果希望编写基于web 的dbi 脚本,还可以安装cgl.pm 模块。dbi 软件需要perl 的相当新的版本(5.004 或更新)。如果没有安装perl,请访问http://www. per l . c o m /,下载perl 分发包,并在安装dbi 支持环境前安装它。 dbi 支持环境需要三个模块,可从源代码或rpm 文件对它进行安装: d a t a - d um per 方便地处理perl 数据结构的模块。 dbi 主dbi 驱动。 msql-mysql-modules 连接到mysql服务器时,dbi 使用的mysql专用驱动。 如果从源代码进行安装,应该按前面清单中给出的次序安装这个模块。否则,下面安装说明中的测试步骤将会不正常。 所有三个模块的安装都是类似的。在从源代码进行安装时,利用下面的某个命令打开分发包(如果tar 版本不支持非压缩分发包的z 选项,应该使用第二条命令): % tar zxf dist_file.tar.gz % gunzip < dist_file.tar.gz | tar xf 然后进入tar 命令创建的分发包目录并运行下列命令(可能需要作为root 运行这些安装步骤): % perl makefile.pl % make % make test % make install 如果运行前面msql-mysql-modules 分发包的命令,在生成makefile 时,perl 命令将提出下列问题: ·which drivers do youwant to install? 存在mysql和msql 的各种组合选择。除非还运行m sql,否则选择mysql使其简单化。 ·do youwant to install the mysqlperl emulation? mysqlperl 是mysql的旧perl 接口,已经作废。除非有旧的mysqlperl 脚本并希望在dbi 模块中启用仿真支持环境,否则回答为n o。 ·where is your mysqlinstalled?这应该是包含mysql头文件的祖父目录,大概是/usr/local 或/ us r / l o c a l / mysql,除非将mysql安装在非标准的位置才不是这样。 ·which database should i use for testing the mysqldrivers? 缺省为t e s t,除非关闭了对它的匿名访问,否则这样应该可以了。在关闭其匿名访问时,需要给出一个您拥有访问权的数据库名,然后为后面的问题指定一个合法的mysql用户名和口令。 ·on which host is the database running? 如果运行的是一个本地服务器, localhost 就可以了。如果不行,指定一个您拥有访问权的服务器主机。在执行make test 命令时,mysql服务器必须运行在这个主机上,否则测试将失败。 ·user name for connecting to the database? password for connecting to the database? 为测试连接到mysql服务器的所用的用户名和口令。缺省设置时,这两个问题都可以回答un d e f。这样将使驱动作为匿名用户连接。如果需要非匿名连接,可指定非空值。 如果安装perl 模块有问题,可参阅相应分发包的readme 文件以及dbi 邮件清单的邮件存档文件,因为多数安装问题的答案都可从该处找到。 如果希望使用c g i . p m,它可能已经在perl 安装中给出了。试运行命令perldoc cgi。如果显示cgi 文档,那么cgi 已经安装。否则,取得相应的分发包,按与其他perl 模块相同的说明打开并安装。 如果为了使用基于web 的dbi 脚本,希望安装mod_perl apache 模块,可访问下列位置的apache web 站点的mod_perl 区,得到更多的信息: http://perl.apache.org/
安装php 和apache
按照下面的说明可以开始行动了。如果遇到问题,可查看php 分发包所含的i n s ta l l文件的“verbose insta l l”一节(阅读该文件是个不坏的主意,它含有大量有用信息)。 这些说明都假定您有一个apache 源代码分发包可用,而且将作为一个apache 模块运行php。还假定您具有apache 1.3.9 和php 3.0.12,而且位于这样一个目录中,在该目录下可定位含有源代码分发包的apache_1.3.9 和php-3.0.12 目录。如果您拥有不同的版本或位置,在使用下列说明时,应该替换成您的实际版本号和路径名。 要配置和建立php,可从下列命令入手(这个过程看上去有点怪,因为要从apache 分发包开始,但它是对的): % cd apache_1.3.9 % ./configure apache 的configure 命令是必须的,因为php 需要的某些头文件是在配置时生成的。如果不在apache 分发包中运行configure ,php 配置过程将不能找到文件。在配置了apache后,进入php 分发包目录,配置php,设置它,并安装它。还可以安装php 初始化文件的一个拷贝:
php 的configure 命令告诉php 您想要mysql支持环境,并指出apache 源代码位于何处。--enable-track-vars 选项将窗口输入的自动转换转入可从php 页内部容易地访问的变量内。make 命令编译和安装php。有可能需要作为root 安装初始化文件p h p 3 . i n i。 在作为一个模块建立php 时,直接拷贝相应模块到apache 源代码树来安装它,以便可将它连接进apache 二进制代码内。在完成后,可按如下编译和安装apache: % cd ../apache_1.3.9 % ./configure --activate-module=src/modules/php3/libphp3.a % make % make install 这些步骤配置apache,以便知道php 模块文件,然后建立和安装它。应该编辑apache配置文件h t t p d . c o n f,以便apache 识别php 脚本。php 识别是基于php 脚本的文件扩展名进行的。例如,如果希望apache 识别.php 和. p h p 3,在配置文件中放入下面的两行: addtype application/x-httpd-php3.php addtype application/x-httpd-php3.php3 所用的后缀依赖于打算怎样命名php 脚本。.php 和.php3 可能是最常用的。另一常用的后缀为. p h t m l。如果愿意,可以将它们都启用。如果打算安装从使用这些扩展名的其他人那里得到的页面,最好都启用它们。 还可以告诉apache 在url 的结尾处未指定文件名时,将index.php 或index.php3 作为某个目录的缺省文件。您可能会在配置文件中发现如下的行: directoryindex index.html 将其更改如下: directoryindex index.html index.php index.php3 在编辑apache 配置文件后,结束httpd 服务器(如果有一个正在运行),然后启动刚安装的新h t t p d。在许多系统中,下面的命令(以root 执行)完成此工作: # /usr/local/apache/bin/apachectl stop # /usr/local/apache/bin/apachectl start 还应该设置apache 在系统启动和关闭时启动和关闭。相应的说明请参阅apache 文档。一般情况下,它包括导入时运行apachectl start,以及关闭时运行apachectl stop。