准备工作:
主要是为了回顾下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