准备工作:

主要是为了回顾下RedHat下各种软件的安装方式,而恰好MySQL五种方式都提供了,所以这里将其作为例子。由最简单的yum安装,到rpm安装,再是rpm源码包安装,之后是二进制安装,最后是源码安装。

环境为:CentOS_6.4_i386

主要内容:

  • yum安装MySQL

  • rpm安装MySQL

  • rpm源码包安装MySQL

  • 二进制格式的MySQL安装

  • 源码格式的MySQL安装




一. yum安装MySQL

Yum,全称为Yellow dog Updater,Modified,是一个在Fedora和RedHat以及SUSE、CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。

yum能够自动解决依赖关系,算是最简单的安装方式了


1.设置正确的yum源,编写repo文件

[root@evan ~]# vim /etc/yum.repos.d/my.repo
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
以下为文件内容
[centos]
name=centos
baseurl=http://mirrors.sohu.com/centos/$releasever/os/$basearch
gpgcheck=0
enabled=1


2. yum安装mysql

[root@evan ~]# yum install mysql mysql-server

mysql为客户端,mysql-server为服务端


3. 安装后启动mysqld,进行验证

[root@evan ~]# service mysqld start
Starting mysqld:                                           [  OK  ]
[root@evan ~]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.71 Source distribution
Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>

出现如上信息,则是安装完毕。


二. rpm包安装

其实yum就是基于rpm的前端管理工具,如果使用rpm包安装的话,就得自己解决依赖关系。不过这里要安装的是MySQL-client-5.6.15-1.el6.i686.rpm和MySQL-server-5.6.16-1.el6.i686.rpm,与系统已经安装的mysql-libs-5.1.66-2.el6_3有冲突,而crond服务又依赖于mysql-libs,卸载mysql-libs时会卸载cronie,crontab等软件包,这里的解决办法是加--nodeps。


1. 卸载mysql-libs

[root@evan ~]# rpm -e --nodeps mysql-libs-5.1.*


2. 安装mysql和mysqld

[root@evan ~]# rpm -ivh MySQL-client-5.6.15-1.el6.i686.rpm MySQL-server-5.6.16-1.el6.i686.rpm


3. 启动mysql服务

[root@evan ~]# service mysql start
Starting MySQL... ERROR! The server quit without updating PID file (/var/lib/mysql/evan.pid).

注意,这里启动的服务脚本并不是mysqld,而是mysql,并且,配置文件是/usr/my.cnf,数据目录在/var/lib/mysql下。

查看/var/lib/mysql下的错误日志,发现错误

[Warning] TIMESTAMPwithimplicitDEFAULTvalueisdeprecated. Please use --explicit_defaults_for_timestamp server option


只要重新初始化下数据库就行。

[root@evan ~]# mysql_install_db --user=mysql


再次启动myql服务

[root@evan ~]# service mysql start
Starting MySQL..... SUCCESS!


三. 使用rpm源码包安装

使用源码包安装mysql时,先要将xx.src.rpm制作成rpm包格式。然后按照rpm包的安装方式即可。

使用的源码包是MySQL-5.6.16-1.el6.src.rpm


1. 安装rpm源码包

[root@evan ~]# rpm -ivh MySQL-5.6.16-1.el6.src.rpm

之后,在家目录下回生成一个rpmbuild文件夹


2. 根据SPEC文件制作rpm包

[root@evan ~]# cd rpmbuild/SPECS/
[root@evan SPECS]# ls
mysql.spec
[root@evan SPECS]# rpmbuild -ba mysql.spec
error: Failed build dependencies:
    gperf is needed by MySQL-5.6.16-1.linux_glibc2.12.i686

rpmbuild命令中-ba会同时生成编译好的rpm包和源码rpm包,-bb则只是生成编译好的rpm包

缺少gperf,则安装后再进行


[root@evan SPECS]# yum install gperf
。。。。
[root@evan SPECS]# rpmbuild -ba mysql.spec


结果又出现错误

+ echo 'The MySQL regression tests may fail if run as root.'
The MySQL regression tests may fail if run as root.
+ echo 'If you really need to build the RPM as root, use'
If you really need to build the RPM as root, use
+ echo '--define='\''runselftest 0'\'' to skip the regression tests.'
--define='runselftest 0' to skip the regression tests.


做出修改,再次编译

[root@evan SPECS]# rpmbuild -ba --define='runselftest 0' mysql.specyouch


又出现错误:/var/tmp/rpm-tmp.zv8ntk: line 83: cmake: command not found

安装camke,再试


[root@evan SPECS]# yum install cmake
[root@evan SPECS]# rpmbuild -ba --define='runselftest 0' mysql.specyouch


又是错误,

CMake Error at cmake/build_configurations/mysql_release.cmake:45 (MESSAGE):
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
          aio is required on Linux, you need to install the required library:
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
            Debian/Ubuntu:              apt-get install libaio-dev
            RedHat/Fedora/Oracle Linux: yum install libaio-devel
            SuSE:                       zypper install libaio-devel
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           
          If you really do not want it, pass -DIGNORE_AIO_CHECK to cmake.
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
Call Stack (most recent call first):
  CMakeLists.txt:108 (INCLUDE)


按照提示安装libaio-devel,之后再次编译

[root@evan SPECS]# yum install libaio-devel
[root@evan SPECS]# rpmbuild -ba --define='runselftest 0' mysql.specyouch

之后要等好长一段时间,然后可以到rpmbuild中的RPMS文件下找到文件。


四. 二进制格式的包安装

二进制格式的包相当于windows中的绿色软件,只要解压出来即可使用,当然,配置文件,运行环境都要自己搞定。


1、准备数据目录

由于数据库会不断扩大,避免与根目录的过度耦合,最好新建一个逻辑卷,并挂载到相应目录下。新建逻辑卷的过程这里就不叙述了。

假设其逻辑卷的挂载目录为/mydata,而后需要创建/mydata/data目录做为mysql数据的存放目录。


2. 新建用户以安全运行mysql进程

[root@evan ~]# useradd -r -M -d /mydata/data/ mysql
[root@evan ~]# chown -R mysql:mysql /mydata/data/


3. 解压二进制软件包

[root@evan ~]# tar xf mysql-5.6.13-linux-glibc2.5-i686.tar.gz -C /usr/local/


4. 创建软链接

[root@evan ~]# cd /usr/local/
[root@evan local]# ln -sv mysql-5.6.13-linux-glibc2.5-i686/ mysql


5. 修改mysql文件夹下文件的权限并初始化数据库

[root@evan local]# cd mysql
[root@evan mysql]# chown -R root:mysql *
[root@evan mysql]# ./scripts/mysql_install_db --user=mysql --datadir=/mydata/data/


6. 提供配置文件

[root@evan mysql]# cp support-files/my-default.cnf /etc/my.cnf

同时,修改/etc/my.cnf,将datadir启动并改为/mydata/data


7. 提供服务运行脚本

[root@evan mysql]# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
[root@evan mysql]# chmod +x /etc/rc.d/init.d/mysqld

完成以上步骤就可以启动服务进行测试了,不过是mysql安装规范化,并将其开发组件导出给系统使用,下面的步骤也同样要完成。


8. 修改PATH变量

[root@evan mysql]# echo "export PATH=/usr/local/mysql/bin:$PATH" > /etc/profile.d/mysql.sh


9. 修改MANPATH

编辑/etc/man.config,添加如下行即可:

MANPATH  /usr/local/mysql/man


10. 输出mysql的头文件至系统头文件路径/usr/include

[root@evan mysql]# ln -sv /usr/local/mysql/include/ /usr/include/mysql
`/usr/include/mysql' -> `/usr/local/mysql/include/'


11. 输出mysql的库文件给系统库查找路径

[root@evan mysql]# echo "/usr/local/mysql/lib/" > /etc/ld.so.conf.d/mysql.conf
[root@evan mysql]# ldconfig -v | grep mysql
/usr/local/mysql/lib:
    libmysqlclient.so.18 -> libmysqlclient_r.so.18.1.0
/usr/lib/mysql:
    libmysqlclient_r.so.16 -> libmysqlclient_r.so.16.0.0
    libmysqlclient.so.16 -> libmysqlclient.so.16.0.0

安装完成。


五. 源码包安装mysql

mysql5.5之后,源码安装需要cmake进行编译。这里只介绍安装mysql,安装后的相关配置请参考二进制安装mysql中的相关内容。


请先下载mysql的源码包和cmake的源码包

这里准备的是cmake-2.8.12.2.tar.gz和mysql-5.6.13.tar.gz


1. 编译安装cmake

[root@evan ~]# tar xf cmake-2.8.12.2.tar.gz
[root@evan cmake-2.8.12.2]# cd cmake-2.8.12.2
[root@evan cmake-2.8.12.2]# ./configure
[root@evan cmake-2.8.12.2]# make && make install


2. 编译安装mysql

[root@evan ~]# groupadd -r mysql
[root@evan ~]# useradd -g mysql -r -d /mydata/data mysql
[root@evan ~]# tar xf mysql-5.6.13.tar.gz
[root@evan mysql-5.6.13]# cd mysql-5.6.13
[root@evan mysql-5.6.13]# cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
          -DMYSQL_DATADIR=/mydata/data \
          -DSYSCONFDIR=/etc \
          -DWITH_INNOBASE_STORAGE_ENGINE=1 \
          -DWITH_ARCHIVE_STORAGE_ENGINE=1 \
          -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
          -DWITH_READLINE=1 \
          -DWITH_SSL=system \
          -DWITH_ZLIB=system \
          -DWITH_LIBWRAP=0 \
          -DMYSQL_UNIX_ADDR=/tmp/mysql.sock \
          -DDEFAULT_CHARSET=utf8 \
          -DDEFAULT_COLLATION=utf8_general_ci
[root@evan mysql-5.6.13]# make
[root@evan mysql-5.6.13]# make install


相关的选项:

指定安装文件的安装路径,数据目录,配置文件位置:

-DCMAKE_INSTALL_PREFIX=/usr/local/mysql

-DMYSQL_DATADIR=/data/mysql

-DSYSCONFDIR=/etc


默认编译的存储引擎包括:csv、myisam、myisammrg和heap。若要安装其它存储引擎,可以使用类似如下编译选项:

-DWITH_INNOBASE_STORAGE_ENGINE=1

-DWITH_ARCHIVE_STORAGE_ENGINE=1

-DWITH_BLACKHOLE_STORAGE_ENGINE=1

-DWITH_FEDERATED_STORAGE_ENGINE=1


如若要编译进其它功能,如SSL等,则可使用类似如下选项来实现编译时使用某库或不使用某库:

-DWITH_READLINE=1

-DWITH_SSL=system

-DWITH_ZLIB=system

-DWITH_LIBWRAP=0