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

Centos7源码安装MySQL8,填坑版

前言:

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

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

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

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

一、安装前准备工作

1、下载MySQL官网源码包

wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.19.tar.gz

64184005885b187ca5bbb01bfb7f6be0.png

......

2、安装CMake工具。

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

大家自行去官网下载tar包

8f45fdd1d2930c2a3fdaf132701f8a81.png

(1) 解压

tar xzvf cmake-3.17.0.tar.gz

d7a5676d10d4f0869774a995232b263c.png
e18592f2c715f7f1fcec6b33a1b2b6d9.png

(2)编译

cd cmake-3.17.0

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

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

1116a61dc7313f513a72a23fab7f1add.png
98086b797145a74295b731b52ce2f9fc.png

补:[锚点1]

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

根据提示安装OpenSSL工具

yum isntall openssl-devel

69e6a4c90dfb7082ca51643e557db3fe.png

重新编译

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

34eb87915b788bb8d47169a8aeef2006.png

......

507673018977cdf0e8d089d625d7b7a5.png

编译完成。

(3)安装

make;make install

d874154f635ddc0fb2a973ba06c76d92.png

......

c170dd399893abfa22e47cad25662a64.png

(4) cmake命令软连接

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

cmake --version

dfc33f2705bb34309eab112c6286a0f5.png

3、创建MySQL用户

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

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

命令:

useradd mysql -s /sbin/nologin

id mysql

cat /etc/passwd | grep mysql

6180f80d132c99613123720811459d0b.png

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

d4ce0e3f264b5262404271bb08715a16.png

二、开始源码安装MySQL

1、解压源码包

tar mysql-8.0.19.tar.gz

1291634c11c8efd92b36c22d8b032148.png

1、编译MySQL源码包

cd mysql-8.0.19

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

da7de47c948dd8aa817d33e8a216bfe4.png

(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

95840c8608945532e4268c5cfd7ba093.png

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

安装Git包

d52653964c65fb469ef9c52e694ae1fb.png

......

de6bc4fe1251c1f4537ee0716dc9a695.png

(3)再来一次

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

8b6a46fb89fef1b6c5e019ff6c2598a3.png

......

6d644af0603fb7ab64ffd441dc0aa8a7.png

(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

b2f883622bbb3f19f74ceb9e832ce00a.png

yum install scl-utils

cdec8ebe023dd4365ac453b5b4b786c8.png

安装gcc8

yum install devtoolset-8

623fdcdb364a6b9ae0ea36b60546cf27.png

查看版本

6567a46187cdc5401e4576766afa0f6f.png

补充:

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

即可以在系统中可同时存在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

9a08a204405eb48599d00f35b75982f7.png

补充:

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

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

(5) 再次编译

77f7cef771036805ac61c664a7effdcd.png

......

130fc6662c0dec0b4e5c349aa79d1e96.png

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

e161fb1b47998ae6ec2c0b402c56570d.png

......

1adcdebc015b44d0a7788ede9935a7d4.png

......

43ccb2eceb9a444d4985d12d9e1ef082.png

注意目录

编译时添加-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

39c051016f5f5ed7b2b2461c98ee081d.png

......

68c78ed9b2b31c9b1238dd1d26c18826.png

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

安装ncurses-devel

yum -y install ncurses-devel

bc81300e1d50d78f45c50805a119c46f.png

再次编译

5732048fa8b6df659c7914e2142f5dba.png

......

3e2057c653525e8874004fa484ae6627.png

终于编译完成!!!

3、 安装

1a63571016b11749c063c76c71a331b4.png

......

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

881630dd63db55c59fccd6e6aa6041ba.png

真是命途多舛!!![锚点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

d60494d5297e4db16d6e840ebc6d8855.png

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

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

8eb79f0e26d05f7f7798a0ef23aa47cc.png

补充:

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

swapoff /swapmysql

rm -rf /swapmysql

再次安装

73e6e126dd979a364f3f20c742c089f8.png

......

漫长的等待......

a63bca8c10299658877cb0ed9a58c200.png

......

终于看到曙光了

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

三、配置及初始化数据库

1、修改配置文件

ca71a06f43bcd605e638d33a92317a5a.png

根据自己的实际情况编写

f15eb6c4e20a456152ec03c8ac167348.png

2、初始化数据库

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

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

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

注意:

下图标红的临时密码

e67e804c3a3a83cfa129eddd95d63a4a.png

安装ssl

./bin/mysql_ssl_rsa_setup

8dfc052f160e28e8e4e7c4ea862669ea.png

四、启动数据库

1、复制启动脚本

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

5a09aacf2154573d4041897ec40d40f8.png

2、修改脚本

abf59421e2b28cf23e90f70877b0963d.png
187045a3263fde8a6ec6cee8c12031df.png

3、开启mysql服务

service mysqld start

cb1d3c5ac6a9fbe8e51479ed5c8e0939.png

4、加入启动项

b3a2cfe03073a5fd73f5dd401851f6e5.png

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

f1a127f89f4d27244cc87a3eeaa00c65.png
3562fd2dae098777c2af99928ba5932f.png

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

1、登陆

mysql -u root -p

注意:

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

72969bb4a873d92f37138a869085c70a.png

2、修改密码

alter user user() identified by 'yourpassword';

flush privileges;

0bb577b2a3874b2e7d7586394870e28e.png

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

54708f67eed15d693d50f0a62ede151d.png

最后补充:

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

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

de52dbc40115df457deea5a5cf4bcf23.png

测试

dafa790b76ce069bc2125a5cd8a67e4f.png

总结:

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

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

借助一位网红的话:

不管遇到什么困难

微笑着面对它

坚持才是胜利

加油

奥利给!

最后感谢大家支持

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值