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
# 查看版本
[root@mysql ~]# 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。
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,所以就随便选一个吧。有知道的大神可以留言,小弟感激不尽。
解压
# 解压boots
tar -zxvf mysql-boost-8.0.19.tar.gz
# 进入目录
cd mysql-8.0.19
创建临时bld文件夹
mkdir bld
编译与安装
cmake
先去官网下载:
# 解压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
后续处理
# 可以先把安装文件给删去:
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"
# 永久生效别名
[root@mysql ~]# 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
[root@mysql ~]# source /root/.bashrc
# 启动服务
[root@mysql ~]# mysqld
# 启动
[root@mysql ~]# 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