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
[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..tar.gz
[root@centos ~]# cd mysql-5.6.
☆ 配置
cmake \
-DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DSYSCONFDIR=/etc \
-DWITH_MYISAM_STORAGE_ENGINE= \
-DWITH_INNOBASE_STORAGE_ENGINE= \
-DWITH_MEMORY_STORAGE_ENGINE= \
-DWITH_READLINE= \
-DMYSQL_UNIX_ADDR=/var/lib/mysql/mysql.sock \
-DMYSQL_TCP_PORT= \
-DENABLED_LOCAL_INFILE= \
-DWITH_PARTITION_STORAGE_ENGINE= \
-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' 一个关于编译环境的描述性注释
Mysql 源码编译教程贴的更多相关文章
- Dubbo入门到精通学习笔记(十九):MySQL源码编译安装、MySQL主从复制的配置
文章目录 MySQL 源码编译安装(CentOS-6.6+MySQL-5.6) 一.服务器配置: 二.源码安装 MySQL5.6.26: MySQL主从复制的配置 环境 依赖课程 MySQL 主从复制 ...
- MySQL源码编译与初始化
MySQL源码编译与初始化 链接:https://pan.baidu.com/s/1ANGg3Kd_28BzQrA5ya17fQ 提取码:ekpy 复制这段内容后打开百度网盘手机App,操作更方便哦 ...
- ubuntu下mysql源码编译安装
建议:cpu4核以上,内存4G以上 1. 安装环境:Ubuntu Server 14.10MySQL-5.6.23.tar.gz 2. 安装必备的工具sudo apt-get install make ...
- mysql源码编译安装
首先去官网http://dev.mysql.com/downloads/mysql/ 下载mysql源码.我下的是5.7.10 源码选择的是 Generic Linux (Architecture I ...
- Mysql源码编译安装&主从复制
一)camke源码编译安装mysql 1)创建软件安装目录software [root@master software]# ls cmake-2.8.8.tar.gz mysql-5.5.32.tar ...
- MySQL 源码编译安装
脚本须知: 1. 该脚本目前只测试过mysql版本为5.6.x的源码,其他源码可以对本脚本稍作修改即可 2. 本脚本也可以使用wget mysql源码的方式进行,但考虑到后期提供源码的地址不可用,所以 ...
- 独一无二 hortonworks spark 源码编译教程
hortonworks的源码在github上能找到! https://github.com/hortonworks/spark2-release 找到对应版本release源码后下载到本地 在wind ...
- Ogre源码编译教程
最近突然发现Ogre引擎更新到2.1版本了,既然依旧是代码开源,本着学习的精神就下载下来弄弄.但是官网提供的SDK版本只有1.9的,考虑到学习的便利性,因此最好从Source版本开始弄,这样的话以后想 ...
- hadoop 2.7.3 源码编译教程
1.工具准备,最靠谱的是hadoop说明文档里要求具备的那些工具. 到hadoop官网,点击source下载hadoop-2.7.3-src.tar.gz. 解压之 tar -zxvf hadoop- ...
随机推荐
- Naive and Silly Muggles (计算几何)
Naive and Silly Muggles Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/ ...
- Java编译原理
http://wenku.baidu.com/view/f9b1734b87c24028915fc3a3.html Java编译原理 1. 关于动态加载机制 学习Java比C++更容易理解OOP的思想 ...
- 网络流(最大流) HDU 1565 方格取数(1) HDU 1569 方格取数(2)
HDU 1565 方格取数(1) 给你一个n*n的格子的棋盘,每个格子里面有一个非负数.从中取出若干个数,使得任意的两个数所在的格子没有公共边,就是说所取的数所在的2个格子不能相邻,并且取出的数的 ...
- 【拓扑】【宽搜】CSU 1084 有向无环图 (2016湖南省第十二届大学生计算机程序设计竞赛)
题目链接: http://acm.csu.edu.cn/OnlineJudge/problem.php?id=1804 题目大意: 一个有向无环图(DAG),有N个点M条有向边(N,M<=105 ...
- HDOJ 1215 七夕节
Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!" ...
- C++ static(施工中)
static 变量 头文件中的static会在引用该头文件的cpp中分别生成副本 //H.h #ifndef _H_H_ #define _H_H_ ; #endif //Ex_2.c #includ ...
- 获取contenteditable的内容 对html进行处理 兼容 chrome、IE、Firefox
var html = $(this).html();if(html){ var lineSign = html.indexOf('<div>'); if(html.indexOf('< ...
- openresty安装lua和nginx相关
server{ listen ; server_name a.com; index index.php; root /usr/share/nginx/html; location / { if (!- ...
- Hadoop与HBase中遇到的问题
1. Hadoop中遇到的问题 曾经所遇到的问题因为没有记录,所以忘了 (1)NameNode没有启动成功, 是因为你对HDFS多次格式化,导致datanode中与namenode中的VERSION文 ...
- Swift开发之 使用系统的TabbarController
使用系统的tabbar解决图片的问题. 用sb使用系统的tabbar,弄好后发现图片始终是蓝色的,并非原来的图片,后经上网查资料,问问同事,有了以下的这些代码,做个标记. AppDelegate中 f ...