Centos 7环境MySql8.0.28源码安装

Centos 7环境MySql8.0.28源码安装

环境信息

操作系统:CentOS Linux release 7.9.2009 (Core)
配置:内存4g,硬盘60g,cpu4核
gcc:7.5.0版本
cmake:3.15.5版本
MySQL:8.0.28版本

升级gcc

根据MySQL官网的资料:https://dev.mysql.com/doc/refman/8.0/en/source-installation-prerequisites.html
从MySQL 8.0.27开始,MySQL 8.0源代码允许使用C++17功能。若要在所有受支持的平台上启用良好的 C++17 支持级别,Linux环境gcc版本最好在7.1以上,所以先升级gcc版本,选择gcc7.5.0版本。

1,查看自带版本

gcc -v

如下图所示:
在这里插入图片描述
2,下载gcc7.5.0tar包
下载网址:http://ftp.gnu.org/gnu/gcc/,有各种版本的gcc。

3,上传gcc-7.5.0.tar.xz到服务器,目录自定义
4,解压gcc-7.5.0.tar.xz

xz -d gcc-7.5.0.tar.xz
tar -xvf gcc-7.5.0.tar

5,进入解压目录gcc-7.5.0/,自动下载依赖

cd gcc-7.5.0
./contrib/download_prerequisites

6,建立文件夹build,并进入配置,生成Makefile文件

mkdir build
cd build
../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib

7,编译

make

8,安装

make install

9,链接

rm -rf /usr/bin/gcc
rm -rf /usr/bin/g++
rm -rf /usr/lib64/libstdc++.so.6
sudo ln -sf /usr/local/bin/gcc /usr/bin/gcc
sudo ln -sf /usr/local/bin/g++ /usr/bin/g++
sudo ln -sf /usr/local/include/c++/7.5.0 /usr/include/c++/7.5.0
sudo ln -sf /usr/local/lib64/libstdc++.so.6 /usr/lib64/libstdc++.so.6

10,重启,再次查看gcc版本

reboot
gcc -v

如下图所示:
在这里插入图片描述

升级cmake

1,查看现有版本

cmake -version

如下图所示:
在这里插入图片描述

2,下载
登录https://cmake.org/files/下载cmake-3.15.5-Linux-x86_64.tar.gz
3,将包上传到服务器,目录自定义
4,解压cmake-3.15.5-Linux-x86_64.tar.gz

tar -xvf cmake-3.15.5-Linux-x86_64.tar.gz

5,建立软连接

rm -rf /usr/bin/cmake
ln -s /opt/software/cmake-3.15.5-Linux-x86_64/bin/cmake /usr/bin/cmake

6,再次查看cmake版本

cmake -version

如下图所示:
在这里插入图片描述

安装MySQL

1,MySQL官网下载源码包
地址:https://downloads.mysql.com/archives/community/
在这里插入图片描述
由于MySQL用到boost库,所以选择boost版本,也可以自行安装。

2,将mysql-boost-8.0.28.tar.gz上传到服务器,解压,目录自定义

tar -xvf mysql-boost-8.0.28.tar.gz

3,进入目录mysql-8.0.28,创建build文件夹

cd mysql-8.0.28
mkdir build

4,进入build文件夹,创建两个脚本文件cmake.sh make.sh

touch cmake.sh make.sh
chmod 755 cmake.sh make.sh

cmake.sh文件内容如下:

cmake ../ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \
-DMYSQL_DATADIR=/usr/local/mysql/data \
-DMYSQL_UNIX_ADDR=/usr/local/mysql/data/mysql.sock \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EXTRA_CHARSETS=all \
-DDEFAULT_CHARSET=utf8mb4 \
-DWITH_BOOST=/opt/software/mysql-8.0.28/boost/boost_1_73_0 \
-DWITH_DEBUG=ON \
-DCMAKE_C_FLAGS="-Wno-error" \
-DCMAKE_CXX_FLAGS="-Wno-error"\
-DCMAKE_CXX_COMPILER=/usr/local/bin/g++ \
-DCMAKE_C_COMPILER=/usr/local/bin/gcc

详细配置信息可以参考官网文档:https://dev.mysql.com/doc/refman/8.0/en/source-configuration-options.html
该脚本可以不用写,直接执行命令,我是为了重复使用才用脚本形式。
make.sh文件内容如下:

date
./cmake.sh
date
make
date

由于编译时间较长,这个主要用来记录下编译时间。

5,编译

./make.sh

如果报如下错误:
在这里插入图片描述
则是gcc的路径不对,在上述cmake.sh中配置gcc正确的路径。
如果报如下错误:在这里插入图片描述
则在源码中找到编译参数-Werror将其删除,再重新编译。
我修改了maintainer.cmake文件179和180行,如下图所示:
在这里插入图片描述

我这编译花了一个半小时,仅供参考。

6,安装

make install

7,创建用户和组

groupadd mysql
useradd -g mysql mysql

8,创建文件及授权

mkdir /usr/local/mysql/data
touch /usr/local/mysql/mysql.log
chown -R mysql:mysql usr/local/mysql

9,初始化数据库

/usr/local/mysql/bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

注意:初始化完成会生成一个密码,后面会用到。

10,修改/etc/my.cnf文件

vim /etc/my.cnf

配置信息如下:

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/usr/local/mysql/mysql.sock
port=3306
symbolic-links=0
character-set-server=utf8
[mysqld_safe]
log-error=/usr/local/mysql/mysql.log
pid-file=/var/log/mysql/mysql.pid
[client]
socket=/usr/local/mysql/mysql.sock
port=3306
default-character-set=utf8

11,配置mysql.server

cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysql.server

配置信息如下:

basedir=/usr/local/mysql
datadir=/usr/local/mysql/data

12,启动mysql服务

/etc/init.d/mysql.server start

13,登录数据库

/usr/local/mysql/bin/mysql -u root -p

输入上述第5步生成的密码。

14,错误解决
如果报下述错误:

ERROR 1862 (HY000): Your password has expired. To log in you must change it using a client that supports expired passwords.

重启mysql服务,再重新登录

/etc/init.d/mysql.server restart

如果报下述错误:

ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)

先修改文件/etc/my.cnf,在mysqld添加以下内容

skip-grant-tables

再次重启mysql服务,此次是以空密码方式登录数据库

/usr/local/mysql/bin/mysql -u root -p

输入密码的时候直接enter,即可登录,然后修改密码

flush privileges;
alter user 'root'@'localhost' identified with mysql_native_password by '自定义密码';

将/etc/my.cnf修改回去,再重启mysql服务,再次登录数据库即可。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值