相关下载地址:

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

原文地址:http://www.cnblogs.com/capmew/p/16901261.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性