centos7上源码安装MySQL数据库的环境准备及MySQL的源码编译安装

运行环境为centos7,以下操作,全部使用root用户。假设所有操作都在/opt目录下执行。

一 安装cmake环境

root进入/opt目录,执行:

wget http://www.cmake.org/files/v3.7/cmake-3.7.0-rc1.tar.gz

在当前目录下载cmake-3.7.0的源码,安装编译MySQL8.x的版本,cmake3.7够用,如果需要更高版本,可以直接到cmake网站的下载页找,然后使用wget的方式下载到本地。

本地tar解压,进入该目录。

直接执行 ./bootstrap

gmake

gmake install

顺序执行即可,若执行时出现异常,检查install_manifest.txt文件,按里面的描述,删除所有对应位置的文件即可。

 

二 升级安装GCC环境

centos7中默认的gcc是4.9.*,编译安装MySQL8.*的版本至少需要gcc5.4以上,所以需要升级gcc。

同样在/opt目录下使用wget下载需要的gcc源码,wget https://ftp.gnu.org/gnu/gcc/gcc-5.4.0/gcc-5.4.0.tar.bz2

tar解压并进入gcc目录,在联网的状态下执行:./contrib/download_prerequisites 下载需要的内容。

在gcc这个解压目或任意位置创建一个目录,用来存放执行是的编译文件,例如在gcc这个目录里创建一个bld目录,进入该目录执行上级目录中的configure文件:{srcdir}/configure --prefix={destdir} [其它选项]

{srcdir}为源码解压目录,{destdir}为安装的目标目录,

例如,如果想将GCC 5.4.0安装到/opt/gcc-5.4.0目录下在我的机器上,我是这样配置的:

{srcdir}/configure --prefix=/opt/gcc-5.4.0 --disable-checking --enable-languages=c,c++ --disable-multilib 将GCC安装在/opt/gcc-5.4.0目录下,不检测,支持C/C++语言,不编译32位操作系统。

make j4

make install

修改/etc/profile

增加 export PATH=/opt/gcc-5.4.0/bin:$PATH 就是--prefix的目录的bin

注意,执行完安装升级后,需要将/usr/lib64中原有的库文件替换成最新版本:

首先找到新安装的GCC的位置,例如使用源码安装到了:--prefix=/opt/gcc-5.4.0

在这个目录里查找:find / -name "libstdc++.so*"

找到最新的动态库文件:/opt/gcc-5.4.0/lib64/libstdc++.so.6.0.21

首先需要把这个libstdc++.so.6.0.21 复制到 /usr/lib64中,从/usr/lib64中可以看到当前肯定有比他版本低的文件,且有软连接指向他。

切换到/usr/lib64,查看libstdc++.so.6,可以看到当前是旧文件在指向他,删除这个软连接,rm -rf libstdc++.so.6

重新给新的so文件建立软连接即可

ln -s libstdc++.so.6.0.27 libstdc++.so.6

 

三 编译安装MySQL

以上环境准备好后,下载MySQL的源码版本到指定目录,例如/opt下。

解压tar包,进入该目录,同样为了避免configure时的文件和源文件混杂,新建一个临时目录,在该目录里执行configure等操作。

根据需要,使用yum安装openssl:yum install –y openssl openssl-devel ncurses ncurses-devel

同时在本地下载一个boost_1_73_0,cmake的时候指定一下,否则会报错。

然后在临时目录里执行 cmake .. boost_1_73_0。顺利的话后续就算make && make install,默认会把编译的内容安装在/usr/local/mysql 目录。

 

四 初始化MySQL并连接服务器

  • 创建启动的cnf文件:start.cnf,此文件仅能保障最基本的启动,需要其他功能需要再编辑添加。

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/mysql_data
user=mysql
port=3306
socket=/usr/local/mysql/mysql_data/mysql.socket
log_error=/usr/local/mysql/mysql_data/mysql.log
log_bin=/usr/local/mysql/mysql_data/binlog
skip_name_resolve
skip-grant-tables
~        

* 注意相关目录要有mysql用户的权限。

  • 执行目录初始化:

./mysqld --defaults-file=../start.cnf --initialize --user=mysql

  • 启动服务进程:

./mysqld_safe --defaults-file=../start.cnf &

  • 客户端连接服务器:本地连接使用-Ssocket,不使用-h参数。

./mysql -P3306 -ugreatdb -pgreatdb -S/usr/local/mysql/mysql_data/mysql.socket

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

你说我听海绵宝宝派大星

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值