龙空技术网

那些年我们曾踩过的坑之Centos7源码安装MySQL8

双主双机热备 155

前言:

今天姐妹们对“centos7离线安装mysql”大体比较关心,兄弟们都想要剖析一些“centos7离线安装mysql”的相关文章。那么小编在网上网罗了一些有关“centos7离线安装mysql””的相关资讯,希望兄弟们能喜欢,我们快快来学习一下吧!

Centos7源码安装MySQL8,填坑版

前言:

该篇篇幅过长,遇坑且多,请慎入!!!

同时致敬咱们广大的填坑先锋们。谢谢诸位填坑侠!

大家安装时都踩过什么坑,可以评论留言,共勉。

如果你做好了心理准备,详情见下:--->>>

一、安装前准备工作

1、下载MySQL官网源码包

wget

......

2、安装CMake工具。

CMake是Linux系统中一款常用的编译工具。

大家自行去官网下载tar包

(1) 解压

tar xzvf cmake-3.17.0.tar.gz

(2)编译

cd cmake-3.17.0

./configure --prefix=/usr/local/cmake-3.17.0

--prefix:配置cmake的安装目录

补:[锚点1]

如果编译错误如上图,需要安装OpenSSL工具

根据提示安装OpenSSL工具

yum isntall openssl-devel

重新编译

./configure --prefix=/usr/local/cmake-3.17.0

......

编译完成。

(3)安装

make;make install

......

(4) cmake命令软连接

ln -s /usr/local/cmake-3.17.0/bin/cmake /usr/local/bin/cmake

cmake --version

3、创建MySQL用户

创建一个名为mysql的用户,专门用于负责运行MySQL数据库。

将这类账户的Bash终端设置成nologin解释器,主要是为了限制该用户登录到服务器中,提高系统安全性。

命令:

useradd mysql -s /sbin/nologin

id mysql

cat /etc/passwd | grep mysql

4、创建MySQL数据库相关目录

创建用于保存MySQL数据库程序和数据库文件的目录,并把该目录的所有者和所属组身份修改为mysql。

/usr/local/mysql:是用于保存MySQL数据库服务程序的目录

/usr/local/mysql/var:用于保存真实数据库文件的目录

命令:

mkdir -p /usr/local/mysql/var

chown -Rf mysql:mysql /usr/local/mysql

ll /usr/local/mysql/ -d

二、开始源码安装MySQL

1、解压源码包

tar mysql-8.0.19.tar.gz

1、编译MySQL源码包

cd mysql-8.0.19

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc

(1)以上报错:[锚点2]

是它建议你不要构建源代码。

解决方法:

在配置的时候加入字段:-DFORCE_INSOURCE_BUILD=1

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc -DFORCE_INSOURCE_BUILD=1

(2) 再次报错,提示缺少git包[锚点3]

安装Git包

......

(3)再来一次

CMakeCache.txt 删除掉,它是记录了你上次的编译配置

......

(4)gcc版本过低,无法编译MySQL8[锚点4]

CentOS 7官方源的gcc最新版本是4.8.5,发布于2015年,年代久远且不支持c++14。要编译c++14及以上项目,必须要升级现有版本或者安装高版本的gcc。

方案一:手动编译升级GCC版本,但是GCC太高的话,之前使用低版本GCC编译的软件是否会存在问题?有兴趣的可以测试一下。

方案二:GCC了解的很少人,编译可能有很多隐患,不太建议编译安装。我们这里使用Software Collections。

补充:

红帽其实已经编译好了高版本的gcc,但未更新到base和epel这两个常用源中,而是将这些版本放在scl中。

安装scl

yum install centos-release-scl

yum install scl-utils

安装gcc8

yum install devtoolset-8

查看版本

补充:

这些软件包可以同时安装,不会相互覆盖和冲突,也不会覆盖系统的版本。

即可以在系统中可同时存在gcc 6,gcc 7, gcc 8等多个版本。

因为不会覆盖系统默认的gcc,使用这些软件的方法有四种:

(1)使用绝对路径

(2)添加可执行文件路径到PATH环境变量

(3)使用官方推荐的加载命令:

scl enable devtoolset-x bash, x为要启用的版本

(4)执行安装软件自带的脚本:

source /opt/rh/devtoolset-x/enable,x为要启用的版本。

推荐使用最后两种方式。

我们这里使用第(3)方式

scl enable devtoolset-8 bash

补充:

scl以及scl-rh源中的软件包都安装在/opt/rh/目录下,包含可执行文件、配置等。

启用命令的路径是/opt/rh/xxx/enable,安装的服务重启命令则是systemctl restart rh-xxx,需要加rh或scl前缀以区别其他源的包。

(5) 再次编译

......

(6) 解决没有boost的问题[锚点5]

......

......

注意目录

编译时添加-DWITH_BOOST=/usr/local/boost

cmake . -DCMAKE_INSTALL_PREFIX=/usr/local/mysql -DMYSQL_DATADIR=/usr/local/mysql/var -DSYSCONFDIR=/etc -DFORCE_INSOURCE_BUILD=1 -DWITH_BOOST=/usr/local/boost

......

(6) 再次报错[锚点6]

安装ncurses-devel

yum -y install ncurses-devel

再次编译

......

终于编译完成!!!

3、 安装

......

需要耐心的等待......

真是命途多舛!!![锚点7]

以上均为内存不足所致,可通过设置交换分区来解决该问题。

补充:

该主机是阿里云的1核2G硬盘40G

#获取要增加2G的SWAP文件块

dd if=/dev/zero of=/swapmysql bs=1k count=2048000

#创建SWAP文件

mkswap /swapmysql

#激活SWAP文件

swapon /swapmysql

#查看SWAP信息是否正确

swapon -s

#添加到fstab文件中让系统引导时自动启动

echo "/swapmysql swap swap defaults 0 0" >> /etc/fstab

补充:

编译完后,如果不想要交换分区可以删除。

swapoff /swapmysql

rm -rf /swapmysql

再次安装

......

漫长的等待......

......

终于看到曙光了

编译安装好,下面的操作就方便了。

三、配置及初始化数据库

1、修改配置文件

根据自己的实际情况编写

2、初始化数据库

--user:指定MySQL服务的对应账号名称

--datadir:指定MySQL真实数据库的文件保存目录,这样即可生成系统数据库文件,也会生成出新的MySQL服务配置文件。

./bin/mysqld --initialize --user=mysql --datadir=/usr/local/mysql/var

注意:

下图标红的临时密码

安装ssl

./bin/mysql_ssl_rsa_setup

四、启动数据库

1、复制启动脚本

cp support-files/mysql.server /etc/rc.d/init.d/mysqld

2、修改脚本

3、开启mysql服务

service mysqld start

4、加入启动项

5、将mysql自带的一些命令加入环境变量

五、修改密码及配置远程登录

1、登陆

mysql -u root -p

注意:

密码是刚刚生成的临时密码

2、修改密码

alter user user() identified by 'yourpassword';

flush privileges;

3、退出重新以新密码登录

最后补充:

关于配置远程登录,我这里做测试用,比较简单

大家可以自行配置允许访问的主机等等

测试

总结:

一路下来大概花费了大半天,没细算,大概从晚上6点样子到11点多。

总之,源码安装还是比较考验人的耐力。

借助一位网红的话:

不管遇到什么困难

微笑着面对它

坚持才是胜利

加油

奥利给!

最后感谢大家支持

标签: #centos7离线安装mysql