分享
 
 
 

Mysql 源码编译教程贴

王朝学院·作者佚名  2016-05-26
窄屏简体版  字體: |||超大  

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

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

环境: OS: CentOS 6.6x64 mini mysql: mysql-5.6.251. 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:

[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 mysqluseradd -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的配置文件(配置文件放哪里)

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

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

makemake 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 -rfCMakeCache.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官方推荐设为/usrStorage 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=1Library相关-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' 一个关于编译环境的描述性注释

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有