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://101.44.1.118/files/90110000038859AB/nchc.dl.sourceforge.net/project/mysql.mirror/MySQL%205.6.25/mysql-5.6.25.tar.gz

2.安装:

  ☆ 禁掉selinx

    ★ 使用下边命令获取selinux:      

[[email protected] ~]# getenforce
Disabled

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

         Enforcing 开启状态

         Permissive 临时禁用

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

[[email protected] ~]# setenforce 0
[[email protected] ~]# sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/‘ /etc/selinux/config

    ★ 检查下是否修改正确

[[email protected] ~]# getenforce
Permissive
[[email protected] ~]# 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源码包(下载到当前目录下) 

[[email protected] ~]# 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源码包,并进入到解压目录        

[[email protected] ~]# tar xvf  mysql-5.6.25.tar.gz
[[email protected] ~]# 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的安装目录

[[email protected] ~]#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 start

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‘ 一个关于编译环境的描述性注释

时间: 2024-11-11 17:54:49

Mysql 源码编译教程贴的相关文章

MySQL源码编译安装(CentOS-6.6+MySQL-5.6)

MySQL源码编译安装(CentOS-6.6+MySQL-5.6) 部署环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 操作用户:root 系统IP:192.168.1.205 主机名:edu-mysql-01 配置:4核.4G内存 一.服务器配置: 1.配置网络 # vi /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=stati

Win7+VS2010:mysql 源码编译与调试

win7+vs2010源码编译mysql 最近由于在实习,工作重点在于一些数据库的开发,为了更好的理解数据库的实现机制,目前萌生了要研究一下mysql数据库源码的想法.那么好吧,说干就干,首先我们需要实现对源码的编译,这里我们选择win7+VS2010来实现,但是试了很多次都失败了.这是我多次配置环境时遇到的问题,各种博客文章总是不太完全,或者说没有说明一些遇到的问题的解决方案,这可能跟具体的操作系统和环境有关.本文就说说我安装的情况. 1. 准备工作 (1)OS:win7 旗舰版 64位 + 

MYSQL源码编译的变动

Mysql的安装,对于mysql不同版本的mysql源码编译方式不一样 5.6.2的版本开始编译方式已经由 configure 变成了cmake方式 ,相关的新的 编译方式在mysql官网已经提供 http://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html 源码下载地址如下 http://dev.mysql.com/downloads/mysql/ 网上相关mysql5.6的源码编译方式 http://www.

纯源码编译安装LAMP,linux,httpd,php,mysql源码编译安装

教程目标:使用源码编译安装的LAMP,运行php网页基础代码 日    期:2015年08月19日 联系邮箱:[email protected] Q Q  群:1851 15701 51CTO博客首页:http://990487026.blog.51cto.com做一个对读者负责的博主.安装一个和我一样的纯净系统,我可以安装成功,你也可以安装成功.我行,你也行!================================================================安装准备

MySQL源码编译安装

1.安装cmake-2.8.10.2.tar.gz 以root用户进入shell #tar -zxvf  cmake-2.8.10.2.tar.gz #cd cmake-2.8.10.2 #./configure #make                         (无法make,检测gcc编译环境) #make install --------------------------------- 2.安装ncurses-5.9.tar.gz #tar -zxvf  ncurses-5.9

MySQL 源码编译安装

脚本须知: 1. 该脚本目前只测试过mysql版本为5.6.x的源码,其他源码可以对本脚本稍作修改即可 2. 本脚本也可以使用wget mysql源码的方式进行,但考虑到后期提供源码的地址不可用,所以需要手动下载mysql 5.6.x的源码包并放入到/usr/local/src 3. 此脚本在编译安装过程中禁用了iptables和SElinux策略,如果你在使用iptalbes相关功能请先完成相关配置. 4. 该脚本主要是对此前尚未装过mysql的linux系统环境而写的,如果此前装过mysql

高可用架构篇 MySQL源码编译安装(CentOS-6.6+MySQL-5.6)

具体操作参考视频教程:http://www.roncoo.com/course/view/85d6008fe77c4199b0cdd2885eaeee53 部署环境 操作系统:CentOS-6.6-x86_64-bin-DVD1.iso MySQL版本:mysql-5.6.26.tar.gz 操作用户:root 系统IP:192.168.1.205 主机名:edu-mysql-01 配置:4核.4G内存 一.服务器配置: 1.配置网络 # vi /etc/sysconfig/network-sc

lnmp环境安装(3)-mysql源码编译安装

一.概述 MySQL是一个跨平台的开源关系型数据库管理系统,目前隶属于Oracle公司.MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了降低网站总体拥有成本而选择了MySQL作为网站数据库. 本节采用mysql-5.6.16的源码进行mysql的安装. mysql的源码级别的安装要基于一个工具cmake来进行安装.CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程) 以

centos下mysql源码编译安装和主备异步配置

安装机器:10.11.1.193.10.11.1.194 主备同步方式:异步同步 mysql版本:mysql community5.6.28 下载源码并解压: tar -zxf mysql-5.6.28.tar.gz cmake安装: 安装编译所需环境: sudo yum install make gcc-c++ cmake bison-develncurses-devel libaio libaio-devel net-tools perl 编译安装mysql cmake-DCMAKE_INS