相关下载地址:
gcc https://ftp.mpi-inf.mpg.de/mirrors/gnu/mirror/gcc.gnu.org/pub/gcc/releases/
cmake https://cmake.org/files/
mysql https://downloads.mysql.com/archives/community/
gmp https://ftp.gnu.org/gnu/gmp/
mpfr https://ftp.gnu.org/gnu/mpfr/
mpc https://ftp.gnu.org/gnu/mpc/
相关编译选项
gcc https://gcc.gnu.org/install/configure.html
mysql https://dev.mysql.com/doc/refman/5.6/en/source-configuration-options.html
前期准备
#记得系统关闭selinux
[root@localhost mysql] useradd -M -s /sbin/nologin -u 1200 -g 1200 mysql #新建mysql进程用户
[root@localhost mysql] mkdir /usr/local/mysql #新建mysql数据库程序目录
[root@localhost mysql] mkdir -p /data/mysql #新建mysql数据目录
[root@localhost mysql] ln -s /usr/local/mysql-8.0.20/ /usr/local/mysql #新建软链接指向数据库具体版本
[root@localhost mysql] chown mysql:mysql /usr/local/mysql #更改数据库程序目录的所属主和所属组
[root@localhost mysql] chown mysql:mysql /data/mysql #更改数据目录的所属主和所属组
[root@localhost mysql] chmod 700 /data/mysql #更改数据目录权限
[root@localhost ~] yum install gcc gcc-c++ openssl-devel ncurses-devel m4 bzip2 bison wget #yum安装相关依赖
gcc
[root@localhost gcc] ./contrib/download_prerequisites #进入gcc安装的目录,运行自带的download_prerequisites脚本自动下载gmp、mpfr、mpc、ISL,也可以自行网上下载gmp、mpfr、mpc、ISL包这样的话就要在编译选项中指定位置
[root@localhost gcc] ./configure --prefix=/usr/local/gcc-5.3.0 \
-enable-languages=c,c++ \ #表示你的gcc支持哪些语言
-disable-multilib \ #不生成编译为其他平台可执行代码的交叉编译器
#--with-gmp=/usr/local/gmp-6.2.1/ \ #若自行下载gmp则需要指定目录
#--with-mpfr=/usr/local/mpfr-4.1.0/ \ #若自行下载mpfr则需要指定目录
#--with-mpc=/usr/local/mpc-1.2.1/ \ #若自行下载mpc则需要指定目录
[root@localhost gcc] make -j $(nproc)
[root@localhost gcc] make install
若系统中有旧版本的gcc,想优先运行新版本的gcc,可以新建/etc/profile.d/gcc.sh文件,在末尾添加一行下行内容,编辑该文件后记得"source /etc/profile.d/gcc.sh"
export PATH=/usr/local/gcc-5.3.0:$PATH #/usr/local/gcc-5.3.0为新版本gcc的位置
编译mysql中若有报错/lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found,它是使用了旧版libstdc++.so.6动态链接库问题,有两种办法解决
########################第一种办法##############################
[root@localhost gcc] find / -name "libstdc++.so.6*"
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libstdc++.so
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libstdc++.so
/usr/lib64/libstdc++.so.6
/usr/lib64/libstdc++.so.6.0.19
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.py
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyc
/usr/share/gdb/auto-load/usr/lib64/libstdc++.so.6.0.19-gdb.pyo
/usr/local/src/gcc-5.3.0/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
/usr/local/src/gcc-5.3.0/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/src/gcc-5.3.0/build/x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/usr/local/src/gcc-5.3.0/build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
/usr/local/src/gcc-5.3.0/build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/src/gcc-5.3.0/build/prev-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/usr/local/src/gcc-5.3.0/build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6.0.21
/usr/local/src/gcc-5.3.0/build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so.6
/usr/local/src/gcc-5.3.0/build/stage1-x86_64-unknown-linux-gnu/libstdc++-v3/src/.libs/libstdc++.so
/usr/local/gcc-5.3.0/lib64/libstdc++.so.6.0.21 #找到新版本gcc目录下的libstdc++.so.6.0.21
/usr/local/gcc-5.3.0/lib64/libstdc++.so.6
/usr/local/gcc-5.3.0/lib64/libstdc++.so
/usr/local/gcc-5.3.0/lib64/libstdc++.so.6.0.21-gdb.py
[root@localhost gcc] cp /usr/local/gcc-5.3.0/lib64/libstdc++.so.6.0.21 /usr/lib64/ #复制新版本的链接库文件到/usr/lib64/目录
[root@localhost gcc] rm /usr/lib64/libstdc++.so.6 #删除原有软链接文件
[root@localhost gcc] ln -s /usr/lib64/libstdc++.so.6.0.21 /usr/lib64/libstdc++.so.6 #新建软链接文件,重新指向新版本链接库
[root@localhost gcc] strings /usr/lib64/libstdc++.so.6 |grep "CXXABI" #验证软链接文件是否链接至新版本链接库
########################第二种办法##############################
[root@localhost gcc] ln -sv /usr/local/gcc-5.3.0/include /usr/include/gcc
[root@localhost gcc] echo "/usr/local/gcc-5.3.0/lib64" >> /etc/ld.so.conf.d/gcc.conf
[root@localhost gcc] ldconfig -v
[root@localhost gcc] ldconfig -p |grep "libstdc++.so"
cmake
[root@localhost cmake-3.5.2]# ./configure --prefix=/usr/local/cmake-3.5.2
[root@localhost cmake-3.5.2]# make
[root@localhost cmake-3.5.2]# make install
[root@localhost cmake-3.5.2]# cd /usr/local/
[root@localhost local]# ln -s cmake-3.5.2/ cmake
[root@localhost local]# vi /etc/profile.d/cmake.ssh
export PATH=/usr/local/cmake/bin:$PATH
[root@localhost local]# cmake -version
mysql
#进入到数据库安装目录
[root@localhost mysql] mkdir build #新建build目录方便编译安装mysql
[root@localhost mysql] cd build
[root@localhost build] cmake .. -DCMAKE_INSTALL_PREFIX="/usr/local/mysql/" \
-DMYSQL_DATADIR="/data/mysql/" \
-DMYSQL_UNIX_ADDR="/usr/local/mysql/tmp/mysql.sock" \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITH_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH-ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH-DEBUG=0 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/mysql-8.0.20/boost \
-DCMAKE_C_COMPILER=/usr/local/gcc-10.3.0/bin/gcc \
-DCMAKE_CXX_COMPILER=/usr/local/gcc-10.3.0/bin/g++
[root@localhost build] make -j $(nproc)
[root@localhost build] make install
[root@localhost build] vi /etc/profile #设置环境变量
export PATH=$PATH:/usr/local/mysql/bin/
[root@localhost build] source /etc/profile
[root@localhost build] vi /usr/lib/systemd/system/mysql.service #编辑MYSQL的Systemd启动脚本文件
[Unit]
Description=MySQL Server
Documentation=Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
#PIDFile=/mysql/data/mysqld.pid
Restart=on-failure
RestartPreventExitStatus=1
TimeoutSec=0
PrivateTmp=false
[Install]
WantedBy=multi-user.target
[root@localhost build] vi /etc/my.cnf #编辑/etc/my.cnf文件
[client]
port=3306
socket=/usr/local/mysql/tmp/mysql.sock
default-character-set=utf8
[mysqld]
datadir=/data/mysql
basedir=/usr/local/mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
# Settings user and group are ignored when systemd is used.
# If you need to run mysqld under a different user or group,
# customize your systemd unit file for mariadb according to the
# instructions in http://fedoraproject.org/wiki/Systemd
[mysqld_safe]
log-error=/usr/local/mysql/mysql.log
pid-file=/usr/local/mysql/mysql.pid
#
# include all files from the config directory
#
!includedir /etc/my.cnf.d
[root@localhost build] cd ..
[root@localhost mysql-8.0.20] /usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/data/mysql #初始化操作
2022-11-19T14:20:41.786163Z 0 [Warning] [MY-011070] [Server] 'Disabling symbolic links using --skip-symbolic-links (or equivalent) is the default. Consider not using this option as it' is deprecated and will be removed in a future release.
2022-11-19T14:20:41.786338Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.20) initializing of server in progress as process 53224
2022-11-19T14:20:41.789034Z 0 [Warning] [MY-013242] [Server] --character-set-server: 'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.
2022-11-19T14:20:41.789044Z 0 [Warning] [MY-013244] [Server] --collation-server: 'utf8_general_ci' is a collation of the deprecated character set UTF8MB3. Please consider using UTF8MB4 with an appropriate collation instead.
2022-11-19T14:20:41.941277Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2022-11-19T14:20:42.766008Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2022-11-19T14:20:45.840262Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: 2L#iI7m.:q;o #初始密码在这里,记得登录后修改
[root@localhost build] systemctl start mysql #根据启动mysql提示,touch命令创建sock/pid/log等文件并设置所属主及所属组和权限
参考链接
https://www.cnblogs.com/jimlau/p/13263052.html
https://www.cpweb.top/882
https://www.cnblogs.com/jimlau/p/13263052.html
https://blog.csdn.net/zxp725167/article/details/122245785