Mysql编译安装8.0.19

sunln00 2020-05-07

Mysql编译安装8.0.19

准备工作

下面是安装要求,已安装的可以跳过。
cmake
boost
gcc
ncurses
openssl
bison
doxygen

GCC

# 查看版本版本不能低于5.3.0
gcc -v

# 安装GCC必备的几个东西
gmp-6.1.0.tar.bz2
mpfr-3.1.3.tar.bz2
mpc-1.0.3.tar.gz
gcc-5.3.0.tar.gz

# 下载地址
链接:https://pan.baidu.com/s/1vvviVxHkVMlDT6hvwjr6rA 
提取码:15i9

# 创建目录
mkdir temp
cd temp

# 解压文件
tar xvf gmp-6.1.0.tar.bz2
tar xvf mpfr-3.1.3.tar.bz2
tar xvf mpc-1.0.3.tar.gz
tar xvf gcc-5.3.0.tar.gz

# 编译gmp-6.1.0
../gmp-6.1.0/configure –prefix=/usr/local/gmp-6.1.0       ------------#这句是说,安装路径是/usr/local/,名字叫gmp-6.1.0;

make
make install
# 安装好后,可以查看/usr/local/gmp-6.1.0目录下有三个文件夹

# 编译mpfr-3.1.3
../mpfr-3.1.3/configure --prefix=/usr/local/mpfr-3.1.3 --with-gmp=/usr/local/gmp-6.1.0    # prefix是安装路径,with是依赖的gmp库。

make
make install

# 编译mpc-1.0.3
../mpc-1.0.3/configure –prefix=/usr/local/mpc-1.0.3 –with-gmp=/usr/local/gmp-6.1.0 –with-mpfr=/usr/local/mpfr-3.1.3

make
make install

# 编译gcc5.3.0
../gcc-5.3.0/configure --prefix=/usr/local/gcc-5.3 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.3 --with-mpc=/usr/local/mpc-1.0.3

make
make install
#在配置时,对于语言language=选项,可以根据自己需要的编译器选择语言。 ,java,obc都可以加进去,至此GCC5.3安装完毕。

# 检查已安装的gcc版本   
rpm  -q gcc
gcc-4.8.5-28.el7.x86_64

# 删除之前的gcc
rpm -e gcc-4.8.5-28.el7.x86_64

# 卸载报错要卸载所有依赖

# 把gcc-5.3.0软连接到执行目录
cd /usr/bin
ln -s /usr/local/gcc-5.3/bin/gcc gcc
ln -s /usr/local/gcc-5.3/bin/g++ g++

# 生效gcc变量
vim /etc/profile
export  LD_LIBRARY_PATH=/usr/local/gcc-5.3/lib:/usr/local/gcc-5.3/lib64:$LD_LIBRARY_PATH

# source文件
source /etc/profile

# 查看版本
[ ~]# gcc -v
使用内建 specs。
COLLECT_GCC=gcc
COLLECT_LTO_WRAPPER=/usr/local/gcc-5.3/libexec/gcc/x86_64-unknown-linux-gnu/5.3.0/lto-wrapper
目标:x86_64-unknown-linux-gnu
配置为:./configure --prefix=/usr/local/gcc-5.3 --enable-threads=posix --disable-checking --disable-multilib --enable-languages=c,c++ --with-gmp=/usr/local/gmp-6.1.0 --with-mpfr=/usr/local/mpfr-3.1.3 --with-mpc=/usr/local/mpc-1.0.3
线程模型:posix
gcc 版本 5.3.0 (GCC)

boots

boost不需要手动安装,后面运行cmake脚本的时候会自动下载安装,当然也可以手动安装,官网的文档说是需要特定版本,这里的MySQL Server 8.0.19需要的是1.70.0,目前最新的boost库为1.72.0。

Mysql编译安装8.0.19

Mysql编译安装8.0.19

Red Hat系

7.x:

sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen

8.x:

sudo yum install -y bison bzip2 git hostname ncurses-devel openssl openssl-devel pkgconfig tar wget zlib-devel doxygen diffutils rpcgen make libtirpc-devel

boost

https://downloads.mysql.com/archives/community/
这里不知道带boost与不带boost的有什么区别,后面使用cmake的时候都需要手动下载boost,所以就随便选一个吧。有知道的大神可以留言,小弟感激不尽。

Mysql编译安装8.0.19

解压

# 解压boots
tar -zxvf mysql-boost-8.0.19.tar.gz

# 进入目录
cd mysql-8.0.19

创建临时bld文件夹

mkdir bld

编译与安装

cmake

先去官网下载:

Mysql编译安装8.0.19

# 解压cmake
tar zxf cmake-3.17.2-Linux-x86_64.tar.gz

# 进入到cmake目录
cd cmake-3.17.2-Linux-x86_64/

# 进入到cmake下级bin目录
cd bin/

# 软连接到cmake目录
ln -s /root/cmake-3.17.2-Linux-x86_64/bin/cmake /usr/bin/cmake

# 查看cmake版本
cmake -version
cmake version 3.17.2

CMake suite maintained and supported by Kitware (kitware.com/cmake).
cd mysql-8.0.19/bld/
cmake .. -DDOWNLOAD_BOOST=1 -DWITH_BOOST=. -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=ON -DWITH_SSL=system -DCMAKE_INSTALL_PREFIX=/usr/local/mysql/server -DMYSQL_DATADIR=/usr/local/mysql/data -DMYSQL_TCP_PORT=3306

安装了boost的可以不需要:

-DDOWNLOAD_BOOST=1 
-DWITH_BOOST

安装位置与数据位置根据需要自定义:

-DCMAKE_INSTALL_PREFIX=
-DMYSQL_DATADIR=

编译和安装

make
make install

这里笔者遇到了libstdc++.so.6这个库的问题,MySQL Server 8.0.19安装需要GLIBCXX_3.4.25. 可以看看自己的libstdc++.so.6的路径:

cd /usr/local/gcc-5.3/lib64

# 查看libstdc++.so.6版本对不对,不能低于3.4.25
strings /usr/local/gcc-5.3/lib64/libstdc++.so.6 | grep GLIBCXX

# 下载对应libstdc++6_8.3.0-6_amd64.deb
http://ftp.de.debian.org/debian/pool/main/g/gcc-8/libstdc++6_8.3.0-6_amd64.deb

# 解压libstdc++6_8.3.0-6_amd64.deb
ar -x libstdc++6_8.3.0-6_amd64.deb

# 再解压xz
xz -d data.tar.xz
tar -xvf data.tar 

# 删除之前的libstdc++.so.6
rm /usr/lib64/libstdc++.so.6

# 拷贝
cp usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.25 /usr/lib64/

# 软连接到相应目录
ln /usr/lib64/libstdc++.so.6.0.25    /usr/lib64/libstdc++.so.6

# 查看版本是不是4.3.25
strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX

# 测试test,最后显示100% ok
make test

配置MySQL

新建用户组与用户

groupadd mysql
useradd -r -g mysql -s /bin/false mysql

修改数据目录所有者与权限

chown -R mysql:mysql /usr/local/mysql/data/
chmod 777 /usr/local/mysql/data/

编辑mysql配置文件

vim /etc/my.cnf
[mysqld]
port=3306
basedir=/usr/local/mysql/server
datadir=/usr/local/mysql/data
character-set-server=utf8mb4
[mysql]
default-character-set=utf8
[client]
port=3306
default-character-set=utf8

参数根据需要可以后期添加,这里如果使用utf8:

[mysqld]
character-set-server=utf8
会有警告,因为MySQL5.5.3之后增加了utf8mb4,mb4是most bytes 4的意思,专门用来兼容四字节的unicode,utf8指的是utf8mb3,支持的utf8编码最大字符长度为3字节,警告提示改成utf8mb4:

[mysqld]
character-set-server=utf8mb4

初始化

# 进入到MySQL Server的安装目录下的bin
cd /usr/local/mysql/server/bin/

# 初始化
./mysqld --initialize-insecure --user=mysql

# 支持ssl与rsa(可选)
./mysql_ssl_rsa_setup

# 开启服务
./mysqld_safe --user=mysql &

# 修改root密码
./mysql -u root --skip-password

# 首次无密钥登陆
./mysql -u root -p

# 进入mysql数据库user表修改密码为123456
mysql>   use mysql;
mysql>   select user,host,authentication_string from user;
mysql>   alter user ‘root‘@‘localhost‘ identified by ‘123456‘;

测试

./mysqladmin -u root -p version
./mysqlshow -u root -p

Mysql编译安装8.0.19

后续处理

# 可以先把安装文件给删去:
rm -rf mysql-8.0.19*
rm -rf boost_1_70_0*

# 添加别名
alias mysqld="/usr/local/mysql/server/bin/mysqld_safe --user=mysql &"
alias mysql="/usr/local/mysql/server/bin/mysql -u root -p"

# 永久生效别名
[ ~]# cat /root/.bashrc
# .bashrc

# User specific aliases and functions

alias rm=‘rm -i‘
alias cp=‘cp -i‘
alias mv=‘mv -i‘
alias mysqld="/usr/local/mysql/server/bin/mysqld_safe --user=mysql &"
alias mysql="/usr/local/mysql/server/bin/mysql -u root -p"

# Source global definitions
if [ -f /etc/bashrc ]; then
	. /etc/bashrc
fi

[ ~]# source /root/.bashrc

# 启动服务
[ ~]# mysqld

# 启动
[ ~]# mysql

# 进入目录
cd /usr/local/mysql/server/support-files

# 移动到/etc/init.d/
mv mysql.server /etc/init.d/    

# 进入到/etc/init.d/
cd /etc/init.d/

# 改名字
mv mysql.server mysqld

# 启动
/etc/init.d/mysqld start

# 停止
/etc/init.d/mysqld stop

相关推荐