CentOS 7 源码编译安装MySQL数据库

CentOS 7 源码编译安装MySQL数据库

      • CentOS 7 源码编译安装MySQL数据库
        • 查看系统环境
        • 卸载系统中自带的mysql
        • 下载源码包
        • 编译工具以及依赖
        • 编译参数说明
        • 源码编译过程
        • 参考资料

查看系统环境

$ uname -a 
$ uname -r 
$ cat /etc/redhat-release  
$ lsb_release -a #查看详细的系统信息
$ uname -m
$ rz -y #可以直接将Windows中的文件直接传送到虚拟机中

卸载系统中自带的mysql

$ yum -y remove mysql mysql-server
$ rpm -qa | grep mysql  #查看是否有mysql以及mysql-server,如果没有说明卸载完成
$ rm -rf /etc/my.cnf   #删除其原来安装包自带的配置文件

下载源码包

下载源码包,我使用的是mysql-5.5.49,请在官网中选择下载.tar.gz为后缀的包,该包就是你需要的源码安装包。下载地址:https://dev.mysql.com/downloads/mysql/ ,下载如图所示的源码包。
CentOS 7 源码编译安装MySQL数据库_第1张图片
如果在下载的时候不是选择“source code”的.tar.gz,而是选择其他的版本的源代码包,编译根本不能执行,在最早期我就出了这个问题。需要说明的是.tar.gz才是真正的源代码包。想要对源码进行编译,掌握其中的参数是关键,在这里我想可能所有的源码在编译的时候应该考虑的几个问题:

  • 编译安装需要什么工具,如cmake、gcc等,是否你的计算机已经安装,怎么查看呢?
    • 在Linux下使用which查看,比如查看cmake命令是否在哪里,在控制台输入:
      shell
      $ which cmake # 会输出cmake命令存放的路径
      $ rpm -qa | grep cmake #查看cmake命令用哪个rpm包安装
      $ rpm -e cmake #如果需要进行版本的升级,使用该命令,卸载cmake命令的安装包,可能是使用yum安装的,则是使用下面的命令
      $ yum remove cmake #域名命令安装包,使用yum remove命令删除
  • 编译源码时使用的编译参数是什么?通常情况下,如果你要编译源码,那么在官网都会提供相应的编译时参数,比如mysql在编译时,编译参数的说明,请参见官网:http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html 。
  • 编译后测试是否成功,最简单的方式就是看是否能开启软件相关的功能,并且进行相应的操作,比如数据库安装好之后,我查看是否建立数据库、建立表等。

编译工具以及依赖

$ sudo yum install gcc gcc-c++
$ sudo yum install ncurses-devel
$ sudo yum -y install bison

**关于依赖,在编译过程中如果发现缺失再来安装,并且可以使用源码编译的方式去安装这些依赖,步骤是:

#下面是所谓的经典四步骤安装编译过程
$ ./configure
$ make -j 
$ make 
$ make install

**。

编译参数说明

编译参数参见官网:http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html 。

源码编译过程

下面的操作都是在root权限下操作的

$ su     #下面的所有操作都是在root用户下执行的
# tar -xzvf  mysql-5.5.49.tar.gz
# cd mysql-5.5.49
# mkdir project  #不影响源代码,建立一个project文件夹,在其中进行编译
# cd project
# CFLAGS="-O3 -g -fno-exceptions -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
# CXX=g++
# CXXFLAGS="-O3 -g -fno-exceptions -fno-rtti -static-libgcc -fno-omit-frame-pointer -fno-strict-aliasing"
# export CFLAGS CXX CXXFLAGS
//会自动生成/project/class2/mysql,我们会再这个路径下操作
# cmake ..                                                  \
  -DSYSCONFDIR:PATH=/project/class2/mysql \   -DCMAKE_INSTALL_PREFIX:PATH=/project/class2/mysql \   -DCMAKE_BUILD_TYPE:STRING=Release \   -DENABLE_PROFILING:BOOL=ON \   -DWITH_DEBUG:BOOL=OFF \   -DWITH_VALGRIND:BOOL=OFF \   -DENABLE_DEBUG_SYNC:BOOL=OFF \   -DWITH_EXTRA_CHARSETS:STRING=all \   -DWITH_SSL:STRING=bundled \   -DWITH_UNIT_TESTS:BOOL=OFF \   -DWITH_ZLIB:STRING=bundled \   -DWITH_PARTITION_STORAGE_ENGINE:BOOL=ON \   -DWITH_INNOBASE_STORAGE_ENGINE:BOOL=ON \   -DWITH_ARCHIVE_STORAGE_ENGINE:BOOL=ON \   -DWITH_BLACKHOLE_STORAGE_ENGINE:BOOL=ON \   -DWITH_PERFSCHEMA_STORAGE_ENGINE:BOOL=ON \   -DDEFAULT_CHARSET=utf8 \   -DDEFAULT_COLLATION=utf8_general_ci \   -DWITH_EXTRA_CHARSETS=all \   -DENABLED_LOCAL_INFILE:BOOL=ON \   -DWITH_EMBEDDED_SERVER=0 \   -DINSTALL_LAYOUT:STRING=STANDALONE \   -DCOMMUNITY_BUILD:BOOL=ON # make -j    #并行编译,效率高,尽可能使用全部的CPU,会产生一下警告,这是由于在开发的过程中一些bug没有解决,此时只需要make和make install就可以了。
# make   
# make install
# cd /project/class2/mysql   #进入到编译之后的目录
# rm -rf data  #删除下面的data目录
# chown -R mysql:mysql .  #当前目录所有的文件都设置为mysql
# ./scripts/mysql_install_db --datadir=/project/class2/mysql/data  --user=mysql  #建立data目录,并将其授权给用户mysql,在其中能看到两个OK,基本就成功了,生成mysql的系统库,系统表,另外的一个是infomation_schema
# 将my.cnf拷贝到/project/class2/mysql中,很重要,这个目录会影响到上一步的产出,因此不能提早放到该目录中,关于my.cnf,在源码包中自带了几个\*.cnf的模板,在本文中直接使用,在实际的生产环境中应该使用真实的my.cnf进行安装
# 将suport-files中的mysql-server 复制到/project/class2/mysql中,这样才能成功的启动软件
#  sudo /project/class2/mysql/support-files/mysql.server start  #启动mysql
# cd /bin
# ./bin/mysqladmin password 560128
# ./mysql -u root -p #启动mysql数据库

参考资料

  1. 安装过程 https://www.centos.bz/2011/09/linux-compile-install-mysql-5-5-15-from-source/
  2. 参数说明: http://dev.mysql.com/doc/refman/5.5/en/source-configuration-options.html
  3. 其中的错误解决方法很好 http://zhongyilin.blog.51cto.com/5389262/1369361
  4. make -j参数说明文章: http://blog.csdn.net/wangjingfei/article/details/4969942

你可能感兴趣的:(源码,mysql,数据库,centos,mysql-DBA)