龙空技术网

「干货」在PK体系下的CentOS上编译安装MySQL

湖南长城科技 168

前言:

而今小伙伴们对“centos7编译安装mysql”大体比较看重,姐妹们都想要了解一些“centos7编译安装mysql”的相关知识。那么小编在网络上搜集了一些对于“centos7编译安装mysql””的相关文章,希望姐妹们能喜欢,各位老铁们一起来学习一下吧!

前言:本文主要为大家介绍如何在 PK 体系下的 CentOS 上编译安装 MySQL 5.7,请大家多多点赞、收藏、评论、关注哦![比心][比心][比心]

本文使用的操作系统环境为:

CentOS 版本:

# cat /etc/redhat-release

CentOS Linux release 7.6.1810 (AltArch)

Linux 内核版本:

# uname -r

4.14.0-115.el7a.0.1.aarch64

首先对系统进行更新:# yum update, 更新过程中需要校验 GPG key,确认无误则输入"y"继续。

更新完成后,即可正式安装需要的软件。

安装常用工具:

wget 下载工具:

# yum install wget

gcc 编译工具:

# yum install gcc gcc-c++ readline-devel zlib-devel

bzip2 解压缩工具:

# yum install bzip2

由于 CentOS 7 自带的系统镜像源不提供 MySQL 安装包,且提供的替代方案 MairaDB 5.5 版本也较低,MySQL 官方也未提供基于 arm 架构的二进制包,因此需要通过编译源代码方式进行安装。

1 更新系统自带的 gcc 版本

系统自带的 gcc 版本为 4.8.5,在编译 MySQL 源码时会报编译器内部错误,因此需要更新 gcc 版本至 7.3.0。

# gcc -v

gcc version 4.8.5 20150623 (Red Hat 4.8.5-39) (GCC)

我们通过编译源码方式安装 gcc 7.3.0,首先下载 gcc 7.3.0 源代码:

# wget

解压源码包:

# tar -zxf gcc-7.3.0.tar.gz

编译安装前的准备:

# mkdir -p /data/gcc 创建程序将要安装的目录。

# cd gcc-7.3.0进入源代码目录。

# ./contrib/download_prerequisites运行download_prerequisites脚本下载所需要的文件。

mkdir gcc-build-7.3.0 创建编译输出目录。

将需要的文件都复制进编译输出目录:

# cd gcc-build-7.3.0

# cp ../gmp-6.1.0.tar.bz2 ./

# cp ../mpfr-3.1.4.tar.bz2 ./

# cp ../mpc-1.0.3.tar.gz ./

# cp ../isl-0.16.1.tar.bz2 ./

复制完后,在当前目录执行:

# ../configure --prefix=/data/gcc --enable-checking=release --enable-languages=c,c++ --disable-multilib

参数解释:

--prefix=/data/gcc指定安装目录。

--enable-checking=release增加一些检查,也可以–-disable-checking在编译过程中不做检查。

--enable-languages=c,c++选择 gcc 支持的编程语言 c c++。

--disable-multilib取消多目标库编译(取消32位库编译)。

开始编译:# make -j2,时间较长,请耐心等待(测试环境2核 CPU 编译用时超过2小时)。

编译完成后,卸载旧版本 gcc:

检查已安装的 gcc 版本号:

# rpm -q gcc

# rpm -q gcc-c++

根据输出结果进行卸载:

# rpm -e gcc-c++-4.8.5-39.el7.aarch64

# rpm -e gcc-4.8.5-39.el7.aarch64

安装 gcc 7.3.0:

# make install

验证:

将安装目录的 bin 目录添加到环境变量:# export PATH=$PATH:/data/gcc/bin

运行# gcc -v,可以看到版本已经更新完成。

将环境变量语句加入到配置文件,否则只在当前窗口会话生效:# vi /etc/profile,在文件末尾加入一行:export PATH=$PATH:/data/gcc/bin,然后使用# source /etc/profile更新配置文件。

2 编译安装 MySQL 5.7

2.1 安装编译所需要的 boost 库

首先下载 boost 1.59 源代码:

# wget

解压源码包:

# tar -zxf boost_1_59_0.tar.gz

编译安装前的准备:

# mkdir -p /data/boost 创建程序将要安装的目录。

# cd boost_1_59_0进入源代码目录。

# ./bootstrap.sh编译前检查。

# ./b2 --prefix=/data/boost编译。

# ./b2 --prefix=/data/boost install安装。

将 boost lib 库目录环境变量语句加入到配置文件,否则只在当前窗口会话生效:# vi /etc/profile,在文件末尾加入一行:export PATH=$PATH:/data/boost/lib,然后使用# source /etc/profile更新配置文件。编辑动态链接库配置文件:# vi /etc/ld.so.conf,在末尾加上:/data/boost/lib,执行# ldconfig使改动生效。

2.1 编译安装 MySQL 5.7

首先下载 MySQL 5.7.19 源码包:

# wget

更换 gcc 的 lib 库,否则编译过程中可能报错。我们只需找到原来系统自带版本的gcc的lib库替换掉就可以,方法如下:

# find / -name "libstdc++.so*" //找出系统中存在的 lib 库文件。

# cd /usr/lib64 //进入系统 lib 库目录。

# cp libstdc++.so.6 ~/ //备份原来的库文件。

# cp /usr/lib64/libstdc++.so.6.0.19 ~/ //备份原来的库文件。

# rm -rf libstdc++.so.6 //删除原来的库文件。

# rm -rf libstdc++.so.6.0.19 //删除原来的库文件。

# cp /data/gcc/lib64/libstdc++.so.6 ./ //从之前编译安装好的 gcc 7.3.0 目录复制库文件。

# cp /data/gcc/lib64/libstdc++.so.6.0.24 ./ //从之前编译安装好的 gcc 7.3.0 目录复制库文件。

编译安装前的准备:

# mkdir -p /data/mysql 创建程序将要安装的目录。

# mkdir -p /data/mysql/data创建数据存放目录。

# useradd mysql创建 mysql 用户。

# chown -R mysql:mysql /data/mysql/赋予用户目录权限。

# tar zxf mysql-boost-5.7.19.tar.gz解压源代码包。

# cd mysql-5.7.19进入安装目录。

安装编译所需要的依赖软件包:

# yum -y install make cmake bison bison-devel ncurses ncurses-devel libaio-devel autoconf automake perl-Time-HiRes libatomic

编译配置:

# CC=/data/gcc/bin/gcc CXX=/data/gcc/bin/g++ cmake . -DCMAKE_INSTALL_PREFIX=/data/mysql -DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DWITH_MYISAM_STORAGE_ENGINE=1 -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_MEMORY_STORAGE_ENGINE=1 -DWITH_READLINE=1 -DENABLED_LOCAL_INFILE=1 -DMYSQL_DATADIR=/data/mysql/data -DMYSQL_USER=mysql -DMYSQL_TCP_PORT=3306 -DWITHOUT_PARTITION_STORAGE_ENGINE=1 -DWITH_BOOST=boost

开始编译:make -j2

编译过程中可能遇到错误:

error: prctl was not declared in this scope

需要修改源代码mysql-5.7.19/sql/mysqld.cc,在文件前面部分加入以下内容:

#ifdef PR_SET_DUMPABLE

#include

#endif

编译完成后安装:# make install

创建my.cnf配置文件:

# cd /etc

# touch my.cnf

# vi my.cnf

配置文件示例如下:

[client]

port = 3306

socket = /tmp/mysql.sock

[mysqld]

###############################基础设置######################################

#Mysql服务的唯一编号 每个mysql服务Id需唯一server-id = 1

#服务端口号 默认3306

port = 3306

#mysql安装根目录

basedir = /data/mysql

#mysql数据文件所在位置

datadir = /data/mysql/data

#临时目录 比如load data infile会用到

tmpdir = /tmp

#设置socke文件所在目录

socket = /tmp/mysql.sock

[mysqld_safe]

log-error=/var/log/mysqld/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

根据配置文件的内容创建 mysqld.log 和 mysqld.pid 文件并赋予 mysql 用户权限:

# mkdir /var/run/mysqld

# mkdir /var/log/mysqld

# cd /var/run/mysqld

# touch mysqld.pid

# cd /var/log/mysqld

# touch mysqld.log

# chown -R mysql:mysql /var/log/mysqld

# chown -R mysql:mysql /var/run/mysqld

初始化数据库:

# /data/mysql/bin/mysqld --initialize --user=mysql --basedir=/data/mysql --datadir=/data/mysql/data --lc_messages_dir=/data/mysql/share --lc_messages=en_US

记住创建的 MySQL 数据库 root 用户的随机密码。启动 MySQL:

# cd /data/mysql

# ./support-files/mysql.server start

使用 root 密码登录数据库:

# ./mysql -uroot -p -S /tmp/mysql.sock

作者:李凌

更多干货尽在【中国信创服务社区】

标签: #centos7编译安装mysql