zoukankan      html  css  js  c++  java
  • Mysql 源码编译教程贴

    题外话:这是一篇教程贴,不仅学的是mysql的编译,还是一些编译的知识.我也是一个菜鸟,写一些感悟和心得,有什么问题可以批评指正,谢谢!

    如果只是为了安装请移到我的另一篇安装贴: Mysql安装贴

    环境:
      OS: CentOS 6.6x64 mini
      mysql: mysql-5.6.25
    1. mysql 下载:
      http://dev.mysql.com/downloads/mysql/
      说明:这个网站有时候JS被墙,你选择了Source Code会没有反应,所以可以考虑翻翻翻翻翻翻Q或者直接点下边的链接
      下载地址: http://cdn.mysql.com/Downloads/MySQL-5.6/mysql-5.6.27.tar.gz

    2.安装:

      ☆ 禁掉selinx

        ★ 使用下边命令获取selinux:      

    [root@centos ~]# getenforce 
    Disabled

             Disabled 已经禁用了,可以跳过这步了

             Enforcing 开启状态

             Permissive 临时禁用

        ★ 使用下边命令禁用selinux (第一条临时禁用,第二条永久禁用)     

    [root@centos ~]# setenforce 0
    [root@centos ~]# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

        ★ 检查下是否修改正确

    [root@centos ~]# getenforce 
    Permissive 
    [root@centos ~]# cat /etc/selinux/config

            确认里边 SELINUX=disabled  (selinux配置文件一定要确保修改正确,如果错误系统就无法正常启动.)

      ☆ 创建mysql账户  

    groupadd mysql
    useradd -g mysql mysql

      ☆ 依赖包 

    yum install cmake wget  gcc  -y

            Cmake: 因为mysql 5.6支持cmake安装所以我们采用cmake安装.

            wget是linux下载工具,下边就是下载mysql源码包(下载到当前目录下) 

    [root@centos ~]# wget http://101.44.1.118/files/90110000038859AB/nchc.dl.sourceforge.net/project/mysql.mirror/MySQL%205.6.25/mysql-5.6.25.tar.gz

      ☆ 解压mysql源码包,并进入到解压目录        

    [root@centos ~]# tar xvf  mysql-5.6.25.tar.gz
    [root@centos ~]# cd mysql-5.6.25 

      ☆ 配置        

     cmake 
    -DCMAKE_INSTALL_PREFIX=/usr/local/mysql 
    -DMYSQL_DATADIR=/usr/local/mysql/data 
    -DSYSCONFDIR=/etc 
    -DWITH_MYISAM_STORAGE_ENGINE=1 
    -DWITH_INNOBASE_STORAGE_ENGINE=1 
    -DWITH_MEMORY_STORAGE_ENGINE=1 
    -DWITH_READLINE=1 
    -DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock 
    -DMYSQL_TCP_PORT=3306 
    -DENABLED_LOCAL_INFILE=1 
    -DWITH_PARTITION_STORAGE_ENGINE=1 
    -DEXTRA_CHARSETS=all 
    -DDEFAULT_CHARSET=utf8 
    -DDEFAULT_COLLATION=utf8_general_ci

              -DCMAKE_INSTALL_PREFIX= 指向mysql安装目录(安装在哪里)

              -DMYSQL_DATADIR= mysql的数据目录

              -DSYSCONFDIR= Mysql的配置文件(配置文件放哪里)

              这里配置会出错,请移步后边的废话部分,带你装逼带你飞..

              

      ☆  编译并安装(过程比较长,耐心等待)        

    make
    make install 

             在群里发现很多人在编译的时候容易出错,而且配置编译完了也不能确定到底有没有操作成功.虽然下文我有解释,但是我还是要提一下linux下有个$?.. 执行完了不确定紧接着执行:echo $?

             如果返回 0 说明上条命令执行成功,非0的任意数代表有错误.

      ☆  配置Mysql

        ★ 进入到mysql的安装目录

    [root@centos ~]#cd /usr/local/mysql

        ★ 设置权限    

    chown -R mysql .
    chgrp -R mysql .

    ★ 初始化数据库

    scripts/mysql_install_db --user=mysql

    ★ 设置权限

    chown -R root .
    chown -R mysql data

    ★ 启动数据库

    bin/mysqld_safe --user=mysql &

        很多朋友会说写个mysql的启动脚本,干嘛要自己写,mysql已经提供了:

    cp support-files/mysql.server /etc/init.d/mysql.server

    这样就可以了 service mysql.server start

    ☆ 修改$PATH

      $PATH是什么?很多人都不清楚,到底做什么的?这里简短的说一下,$PATH就是执行文件路径的变量,当我们执行一个指令的时候,[mysql],系统会依据PATH的设定去每个PATH定义的目录下搜寻文件名为mysql的可执行文件.如果在 PATH 定义的目录中含有多个文件名为 ls 的可执行文件, 那么先搜寻到的同名文件先被执行!

      [root@centos ~]#which mysql   

      /usr/bin/which: no mysql in()

      没有找到这个mysql从哪里找就是从PATH加载的这么多目录里边去找.  

    [root@centos ~]#echo $PATH
    /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

        这个是系统定义好的PATH目录:  

    [root@centos ~]#sed -i  '/export PATH/i\PATH=$PATH:/usr/local/mysql/bin' .bash_profile
    [root@centos ~]#source .bash_profile 

        直接将/usr/local/mysql/bin追加到PATH后边,我使用sed,为了新手,如果你用vi可以自行编辑..

        这样就可以使用mysql

        [root@centos ~]#which mysql   

        /usr/local/mysql/bin/mysql

    3.废话篇:

      教程篇,就得有废话...废话开始:

      源码的安装就在编译这里,配置编译,配置什么?怎么配置?如何获取,最好的方法就是官方文档,配置就是扩展一些功能,官方文档有解释每一个配置项的作用和默认是否被配置进去.还有就是源码包里有个INstall-Source.txt.写的很详细有几千行,在5000多行的地方<2.9 Installing MySQL from Source>有说如何安装...

      配置是配置,编译是编译.安装是安装. 配置是用的cmake,编译是make..安装是make install.得确保每一步操作成功,进行下一步操作,怎么确认?看配置结束的提示,或者配置结束完紧接着输入echo $? 如果返回0 就说明操作成功了,非零就是有问题.

      编译不一定能保证100%不出问题,教程贴就是教你改怎么编译,说一些自己的心得.其他的错误就得靠经验了,没有办法把整个错误都列出来.

      如果你按我操作的步骤肯定编译会出错:

        错误信息的部分:

          CMake Error: your C compiler: "CMAKE_C_COMPILER-NOTFOUND" was not found. Please set CMAKE_C_COMPILER to a valid compiler path or name.

          CMake Error: your CXX compiler: "CMAKE_CXX_COMPILER-NOTFOUND" was not found. Please set CMAKE_CXX_COMPILER to a valid compiler path or name.

         其实看出来是C的问题了,C是干嘛的?这个就要增加自己的知识储备了,如果不确定自己复制百度下,多看看解决方法: 

    yum install gcc -y

        再来(再次执行CMake),装完发现第二个Cxx的报错没有解决.那就是C++的问题了   

    yum install gcc-c++

        再执行,发现上边的错误没有了,但是又有新的错误了

        关键字:no suitable type found 百度百度   

    yum install ncurses-devel

        问题没解决,后来发现是删除CMakeCache.txt 巨汗...

        rm -rf CMakeCache.txt

        重新执行Cmake的命令

        编译慢慢等..

        中间有很多 found, not found

        就是说有些依赖找到了,有些依赖没有被找到.如果没有报错说明都不是致命的错误,可以以后某些功能没装上(没有装上怎么不办?重新配置编译安装加上自己需要的功能,这些功能需要装什么可以看官方文档,或者网上找找..)

    接下来编译:

    make

        安装:    

    make install

      确定执行成功,返回到配置Mysql,接着配置Mysql

         好了到这里了,有什么错误的地方,有什么问题可以提出来...

      顺便贴上网上找到配置项的解释:

      

    -DCMAKE_INSTALL_PREFIX= 指向mysql安装目录
    -DINSTALL_SBINDIR=sbin 指向可执行文件目录(prefix/sbin)
    -DMYSQL_DATADIR=/var/lib/mysql 指向mysql数据文件目录(/var/lib/mysql)
    -DSYSCONFDIR=/etc/mysql 指向mysql配置文件目录(/etc/mysql)
    -DINSTALL_PLUGINDIR=lib/mysql/plugin 指向插件目录(prefix/lib/mysql/plugin)
    -DINSTALL_MANDIR=share/man 指向man文档目录(prefix/share/man)
    -DINSTALL_SHAREDIR=share 指向aclocal/mysql.m4安装目录(prefix/share)
    -DINSTALL_LIBDIR=lib/mysql 指向对象代码库目录(prefix/lib/mysql)
    -DINSTALL_INCLUDEDIR=include/mysql 指向头文件目录(prefix/include/mysql)
    -DINSTALL_INFODIR=share/info 指向info文档存放目录(prefix/share/info)
    prefix官方推荐设为/usr
    Storage Engine相关
    类型csv,myisam,myisammrg,heap,innobase,archive,blackhole
    若想启用某个引擎的支持:-DWITH_<ENGINE>_STORAGE_ENGINE=1
    如:
    -DWITH_INNOBASE_STORAGE_ENGINE=1
    -DWITH_ARCHIVE_STORAGE_ENGINE=1
    -DWITH_BLACKHOLE_STORAGE_ENGINE=1
    若想禁用某个引擎的支持:-DWITHOUT_<ENGINE>_STORAGE_ENGINE=1
    如:
    -DWITHOUT_EXAMPLE_STORAGE_ENGINE=1
    -DWITHOUT_FEDERATED_STORAGE_ENGINE=1
    -DWITHOUT_PARTITION_STORAGE_ENGINE=1
    Library相关
    -DWITH_READLINE=1 启用readline库支持(提供可编辑的命令行)
    -DWITH_SSL=system 启用ssl库支持(安全套接层)
    -DWITH_ZLIB=system 启用libz库支持(zib、gzib相关)
    -DWTIH_LIBWRAP=0 禁用libwrap库(实现了通用TCP包装的功能,为网络服务守护进程使用)
    -DMYSQL_TCP_PORT=3306 指定TCP端口为3306
    -DMYSQL_UNIX_ADDR=/tmp/mysqld.sock 指定mysql.sock路径
    -DENABLED_LOCAL_INFILE=1 启用本地数据导入支持
    -DEXTRA_CHARSETS=all 启用额外的字符集类型(默认为all)
    -DDEFAULT_CHARSET=utf8 指定默认的字符集为utf8
    -DDEFAULT_COLLATION=utf8_general_ci 设定默认排序规则(utf8_general_ci快速/utf8_unicode_ci准确)
    -DWITH_EMBEDDED_SERVER=1 编译嵌入式服务器支持
    -DMYSQL_USER=mysql 指定mysql用户(默认为mysql)
    -DWITH_DEBUG=0 禁用debug(默认为禁用)
    -DENABLE_PROFILING=0 禁用Profiling分析(默认为开启)
    -DWITH_COMMENT='string' 一个关于编译环境的描述性注释

  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/idnf/p/4590922.html
Copyright © 2011-2022 走看看