3.4安装和配置MySQL的源码包
在Linux操作系统下,有以源码的形式发布的MySQL软件包。这样的软件包中是 MySQL的源代码,需要用户自己进行编译。这种MySQL软件包的灵活性最高,用户可以根据自己的需要进行定制。而且,感兴趣的用户可以査看MySQL的源代码。但是编译代码耗费的时间比较长。本小节将为读者介绍MySQL的源码包的安装与配置。
先必须到MySQL官方网站下载源码包,在该网站上单击Source链接,就可以跳转到下载源码包的位置,如图所示。
图中显示的都是MySQL源码包。其中包括支持Red Hat Enterprise Linux和SUSE Linux Enterprise Server的源码包。还包括支持所有Linux和UNIX操作系统的Compressed GNU TAR archive (tar.gz)、Generic Source RPM 和 Source (zip)。本书选择下载并安装 Compressed GNU TAR archive (tar.gz)。下载后该源码包的名称为 mysql-5.1.40.tar.gz。其中,5.1.40为该源码包的版本号;tar.gz为该源码包的压缩包的后缀名。假设该源码包下载到/home/hjh/download目录下。下面开始编译并安装MySQL数据库软件。具体步骤如下:
(1)登录到root用户,并增加mysql用户和组。登录到root用户的命令如下:
shell>su root
输入命令并按下回车键后,系统会提示输入密码。密码输入正确后,就可以登录到root用户下。然后执行groupadd和useradd命令来增加mysql用户和组,命令如下:
shell>groupadd mysql
shell>useradd -g mysql mysql
其中,useradd的参数-g表示为新建用户分配组;第一个mysql为新用户所属的组;第二个mysql为新用户的名称。这个用户和组是为MySQL数据库准备的,读者也可以换成别的名称。如果换成别的名称,后面命令中用到mysql组和mysql用户的地方均进行相应的替换。这几个命令在Linux操作系统中的执行如下:
[hjh@localhost download]$ su root password: [root@localhost download]# groupadd mysql [root@localhost download]# useradd -g mysql mysql
执行命令后,用户从hjh变成了 root。而且创建了mysql组和mysql用户。
(2)将源码包拷贝到usr/local/src文件夹下,并且解压源码包。代码如下:
shell>cp download_path/mysql-VERSION.tar.gz /usr/local/src/ shell>cd /usr/local/src/ shell>tar -xzvf mysql-VERSION.tar.gz shell>cd mysql-VERSION
上面的第1条命令是将MySQL 源码包拷贝到/usr/local/src文件夹下。download_path 是源码包下载后放置的路径;mysql-VERSION.tar.gz是下载的源码包的名称,VERSION表示版本号。第2条命令表示切换目录到/usr/local/src/文件夹下;第3条命令是解压tar.gz包, 后面几个参数请参照“安装和配置MySQL的二进制包”此节的介绍。 第4条命令是切换到刚才解压出来的目录中,以便进行编译源代码。这些代码执行 如下:
[root@localhost download]# cp ./mysql-5.1.40.tar.gz /usr/local/src/ [root@localhost download]# cd /usr/local/src/ [root@localhost src]# tar -xzvf mysql-5.1.40.tar.gz [root@localhost srcj# cd mysql-5.1.40 [root@localhost mysql-5.1.40]#
因为前面己经指定源码包下载到download目录下,所以./mysql-5.1.40.tar.gz 表示当前目录下的mysql-5.1.40.tar.gz文件。经过tar命令解压,并且通过cd命令切换目录,此时已经进入了/usr/local/src/mysql-5.1.40.tar.gz目录下。在这个目录下可以进行编译和安装了。
(3)编译并安装MySQL。命令如下:
shell>./configure -prefix=/usr/local/mysql/ shell>make shell>make install
第1条命令是进行配置,configure是mysql-5.1.40目录下的一个配置文件。-prefix参数表示设置安装路径,这里将按照路径设置为/usr/local/mysql/;第2条命令是对源码进行编译;第3条命令是进行安装。
说明:configure文件主要是对需要编译的文件进行处理,例如设置安装路径等参数。配置好configure文件后,可以执行make命令进行编译。编译过程需要很长的时间。 编译完成后,可以执行make install命令进行安装。安装完成后,最好执行make clean命令清除编译的文件。
第1条命令的执行如下:
[root@localhost mysql-5.1.40]# ./configure -prefix=/usr/local/mysql checking build system type... i686-pc-linux-nu checking host system type... i686-pc-linux-gnu checking target system type... i686-pc-linux-gnu ...... MySQL has a Web site at http://www.mysql.com/ which carries details on the l atest release, upcoming features, and other information to make your work or play with MySQL more productive. There you can also find information about mailing lists for MySQL discussion. Remember to check the platform specific part of the reference manual for hints about installing MySQL on your platform. Also have a Iook at the files in the Docs directory. Thank you for choosing MySQL!
命令执行后,开始检査系统和参数。执行完成后会出现一些关于MySQL的提示信息,并且出现感谢选择MySQL的感谢语。下面执行第2条和第3条命令,代码执行如下:
[root@localhost mysql-5.1.40]# make [root@localhost mysql-5.1.40]# make insatll
这两条命令在执行时都会输出大量的信息,此处未列出。同时,执行这两个命令都会 耗费一些时间,请读者在安装时能够耐心等待。这两个命令执行成功后,MySQL软件就 已经安装好了。
(4)选择配置文件,并改名为my.cnf。
在mysql-5.1.40文件夹下有一个名为support-files 文件夹,这个文件夹下有很多后缀名为cnf的配置文件。本书选择my-large.cnf文件,将其改名为my.cnf并拷贝到/usr/local/mysql/目录下。详细命令如下:
shell>cp support-files/my-medium.cnf /usr/local/mysql/my.cnf
my.cnf是MySQL的配置文件,启动MySQL服务后就会读取这个配置文件。这个配置文件可以放置在/ect/目录下,也可以放置在MySQL的安装目录下。my.cnf放置在这两个目录下的作用范围是不一样的,详细介绍如下:
/ect/my.cnf是全局变量,每个用户都可以读取。而且,也是最先读取的。
/usr/local/mysql/my.cnf是mysql用户的变量,只能root用户和mysql用户才能读取。 这个命令的执行如下:
[root@localhost mysql-5.1.40]# cp support-files/my-medium.cnf /usr/local/mysql/my.cnf
(5)切换到/usr/local/mysql/目录下,并且创建系统自带的数据库和表。
命令如下:
shell>cd /usr/local/mysql/ shell>bin/mysql_install_db -user=mysql
通过cd命令跳转到/usr/local/mysql/目录下,该目录下有一个名为bin的目录。可以通过bin目录下的mysql_install_db命令来创建系统自带的数据库和表。其中,--user参数表示使用哪个用户的权限来创建数据库和表,此处使用的是mysql用户。数据库和表默认安装/usr/local/mysql/var/目录下。这些命令执行如下:
[root@localhost mysql-5.1.40]# cd /usr/local/mysql/ [root@localhost mysql]# bin/mysql_lnstall_db --user=mysql lnstalling MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands: /usr/local/mysql/bin/mysqladmin -u root password 'new-password' /usr/local/mysql/bin/mysqladmin -u root -h localhost.localdomain password 'new-password' Alternatively you can run: /usr/local/mysql/bin/mysql_secure_lnstallation which will also give you the option of removing the test databases and anonymous user created by default. This is strongly recommended for production servers. See the manual for more instructions. You can start the MySQL daemon with: cd /usr/local/mysql; /usr/local/mysql/bSn/mysqld_safe & You can test the MySQL daemon with mysql-test-run.pl cd /usr/local/mysql/mysql-test; perl mysql-test-run.pl Please report any problems with the /usr/local/mysql/bin/mysqlbug script! The latest information about MySQL is available at http://www.mysql.com/ Support MySQL by buying support/licenses from http://shop.mysql.com/
创建系统数据库和表时,会有很多输出信息。这些输出信息里有一些重要的提示。这些提示的介绍如下:
/usr/local/mysql/bin/mysqladmin -u root password 'new-password',提示使用 mysqladmin 命令来为root用户创建新的密码;
/usr/local/mysql/bin/mysql_secure_installation可以用来删除测试数据库和匿名用户;
/usr/local/mysql/bin/mysqld_safe &提示使用 mysqld_safe 命令来启动 MySQL 服务;
cd /usr/local/mysql/mysql-test; perl mysql-test-run.pl 提示使用/usr/local/mysql/mysql-test目录下的 mysql-test-run.pl 脚本来测试MySQL数据库;
/usr/local/mysql/bin/mysqlbug提示通过这个文件夹下的脚本来报告错误信息。
注意:源码包中的mysql_install_db程序是存储在/usr/local/mysql/bin目录下的。这与二进制包的不同。二进制包的mysql_install_db 程序是存储在/usr/local/mysql/scripts 目录下的。这一点必须要注意,不然很可能就会找不到mysql_install_db程序。
(6)设置MySQL安装目录的权限。
将/usr/local/mysql/目录下的var文件夹的用户设置为mysql。其他文件夹的用户设置为root。这下所有文件夹和文件的组都为root。命令如下:
shell>chown -R root. shell>chown -R mysql var shell>chgrp -R mysql.
chewn命令用来改变文件所属用户的;-R表示用递归的方式来设置,可以设置子文件 夹下的所有文件;“.”表示当前文件夹下的所有文件夹和文件;chgrp命令用来改变文件 所属的组。这些命令执行如下:
root@localhost mysql]# chown -R root. [root@localhost mysql]# chown -R mysql var [root@localhost mysql]# chgrp -R mysql.
代码执行完毕,可以通过ls-l命令来查看/usr/local/mysql/文件夹下各个文件夹所属的用户和组。
[root@localhost mysql]# ls-l/usr/local/mysql/ drwxr-xr-x2 rootmysql 4096 11-14 00:04 bin drwxr-xr-x2 rootmysql 4096 11-14 00:03 docs drwxr-xr-x3 rootmysql 4096 11-14 00:03 include drwxr-xr-x3 rootmysql 4096 11-14 00:03 lib drwxr-xr-x2 rootmysql 4096 11-14 00:04 libexec drwxr-xr-x 10 root mysql 4096 11-14 00:04 mysql-test drwxr-xr-x 5 rootmysql 4096 11-14 00:04 share drwxr-xr-x 5 rootmysql 4096 11-14 00:04 sql-bench drwxr-xr-x5 rootmysql 4096 11-14 00:04 share rw-rw-rw-5 rootmysql 4096 11-14 00:04 my.cnf drwx Drwx-----4 mysql mysql 4096 11-14 10:09 var
从上面结果可以看出,除var文件夹以外所有的文件夹都是root用户的。var文件夹是mysql用户的。所有的文件夹都是属于mysql组的。
(7)配置my.cnf文件。
命令如下:
shell>vi my.cnf
vi是文本编辑工具,可以用来编辑文本文件,前面也已经提到过。这些命令执行如下:
[root@localhost mysql# vi my.cnf
执行cd命令后,目录已经切换到mysql目录下。使用vi进入my.cnf文件后,按I键就可以进行编辑了。按Esc键,然后输入:wp就可以保存退出vi编辑器。my.cnf文件中的各个参数的含义请参考“手工更改配置”小节的内容。
(8)启动MySQL服务。
一般都用mysql用户的身份来启动MySQL服务。命令如下:
shell> bin/mysqld_safe -user=mysql
mysqld_safe是启动MySQL服务的程序。--user参数可以指定用哪个用户登录。命令执行结果如下:
[root@localhost mysql]# bin/mysqld_safe -user=mysql 091114 10:49:44 mysqld_safe Logging to ‘/usr/local/mysql/var//localhost.localdomain.err’. 091114 10:49:44 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/var/
输出的提示信息表示,日志信息存储在localhost.localdomain.err文件中。数据库存储在/usr/local/mysql/var/文件夹下。
(9)登录MySQL数据库。
可以使用bin目录下的mysql程序来登录数据库,命令 如下:
shell>bin/mysql -u root
因为现在还没有初始密码,所以直接输入用户名root就可以登录了。该命令的执行结果如下:
[root@localhost mysql]# bin/mysql -u root Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 1 Server version: 5.1.40-log Source distribution Type 'help;' or \h' for help. Type '\c' to clear the current input statement.
结果显不登录成功,并显不了相应信息。其中,Server version: 5.1.40-log Source distribution,表示这个MySQL数据库是使用源码包安装的。因为没有初始密码,可能会存在潜在的危险,所以需要设置一个初始密码。设置密码之前,必须输入exit来退出MySQL 数据库,然后再设置密码。设置初始密码的命令执行如下。
[root@localhost mysql]# bin/mysqladmin -u root password "123456"
这个命令将密码设置为“123456”。到此为止,使用源码包MySQL数据库已经安装成功。