当前位置: 首页 > Linux

源码编译MySQL

时间:2023-04-06 11:34:47 Linux

注:本次编译MySQL-5.7.19之前使用Linux(CentOS7)系统编译yum-yinstallmakegcc-c++bison-devel(Ubuntu和Debian使用apt-get安装)make,Linux它是一个非常重要的编译工具。主要和基本功能是通过makefile描述源程序之间的关系,自动维护编译工作。gcc-c++,C++编译器(gcc,C编译器)bison-develaparsergenerator下载MySQL源码https://dev.mysql.com/downloads/mysql/下载选项:SourceCode->SourceCodeGenericLinux(ArchitectureIndependent)->GenericLinux(IndependentStructure)CompressedTARArchive,IncludesBoostHeaders->选择带有Boostheaders的压缩包(MySQL需要BoostC++库来构建)wgethttps://dev.mysql.com/get/Dow...tarxzfmysql-boost-5.7.19.tar.gzmvmysql-5.7.19/usr/local/mysql#将MySQL源码移动到/usr/local目录下从源码安装MySQL,需要安装CMakecmake,跨平台编译自动配置工具(生成makefile文件的功能)wgethttps://cmake.org/files/v3.9/cmake-3.9.0.tar.gztarxzfcmake-3.9.0.tar。gzcdcmake-3.9.0./configure--prefix=/usr/local/cmack#根据需要填写安装路径make&&makeinstall如果不想编译安装可以直接:yum-yinstallcmake开始安装MySQLcd/usr/local/mysql#使用cmake编译MySQL(yum安装的直接cmake不需要加路径)/usr/local/cmake/bin/cmake。-DWITH_BOOST=/usr/local/mysql/boost#根据需要调整路径以匹配你安装缺少的ncurses-devel直接yum-yinstallncurses-devel(debian/ubuntu是apt-getinstalllibncurses5-dev)来防止使用旧的目标文件或配置信息,请重新在再次运行CMake之前,在Unix上的buildscheme中运行以下命令makecleanrm-fCMakeCache.txt此时用cmake编译MySQL/usr/local/cmake/bin/cmake。-DWITH_BOOST=/usr/local/mysql/boostmake内存不足,在linux下添加临时交换空间(ps:因为博主穷,服务器配置不高;没有出现这个问题就跳过)解决方法:http://blog.csdn.net/razertang/article/details/45694567makemakeinstall#创建MySQL组和MySQL用户组addmysqluseradd-r-gmysql-s/bin/falsemysql#-s/bin/false禁止使用shell#更改MySQL文件夹权限chown-Rmysql:mysql/usr/local/mysql#初始化数据库并生成初始密码/usr/local/mysql/bin/mysqld--initialize--user=mysql#MySQL5.7.6及以上记录生成的初始密码::a0esd.M=wQF#防止通过MySQL用户修改MySQL文件,用户更改为rootchown-Rroot/usr/local/mysql/#更改期间生成的数据目录用户初始化给MySQL权限chown-Rmysqldata#如果提示没有数据目录mkdirdata&&chown-Rmysql:mysqldata#start/usr/local/mysql/bin/mysqld_safe--user=mysql&/var/log/mariadb/mariadb.log'doesnotexistmkdir/var/log/mariadb&&touch/var/log/mariadb/mariadb.logchown-Rmysql:mysql/var/log/mariadb/启动失败,查看日志:cat/var/log/mariadb/mariadb.log'/var/run/mariadb/mariadb.pid'doesnotexist(ps:报错不一定一样,跟着log解决问题)mkdir/var/run/mariadb&&touch/var/run/mariadb/mariadb.pidchown-Rmysql:mysql/var/run/mariadb/#下一个命令是可选的cpsupport-files/mysql.server/etc/init.d/mysql.server#LogintoMySQL/usr/local/mysql/bin/mysql-uroot-p:a0esd.M=wQFtmp文件夹缺少mysql.sock#软链接mysql.sock到tmpln-s/var/lib/mysql/mysql.sock/tmp/mysql.sock#logintoMySQL/usr/local/mysql/bin/mysql-uroot-p:a0esd.M=wQF#修改MySQL初始密码setpassword=password('XXXX');本文根据MySQL文档编写https://dev.mysql.com/doc/refman/5.7/en/source-installation.htmlhttps://dev.mysql.com/doc/refman/5.7/en/installing-source-distribution.html题外话:在编译过程中,你可能会遇到各种各样的问题;但是请不要马上去Google搜索,静下心来阅读日志;相信我,你会有所收获