CentOS7.6 编译安装MySQL5.7实战

CentOS7.6 编译安装MySQL5.7实战

文章目录

一、系统环境

编译MySQL不但时间长,而且容易出错,建议前期跟我的环境一致,确保完整实现全过程后,再考虑更换版本。

操作系统 内存 cpu ip
CentOS7.6 4G 2核心 192.168.66.61

软件包环境:

  • MySQL: MySQL5.7

  • 提前关闭selinux和防火墙

  • 配置yum源

  • 网络能够通

#关闭SElinux
[root@localhost ~]# setenforce 0 				#临时关闭
[root@localhost ~]# vim /etc/selinux/config 	#永久关闭
修改内容
SELINUX=disabled
[root@localhost ~]# getenforce 				#获取状态
Disabled

#关闭防火墙
[root@localhost ~]# systemctl status firewalld.service	#查看firewall状态
[root@localhost ~]# systemctl stop firewalld.service 		#关闭
[root@localhost ~]# systemctl disable firewalld.service 	#设置开机不启动
[root@localhost ~]# iptables -F							#清空防火墙规则

二、配置yum源

1.先备份Centos-Base.repo,然后从阿里云下载centos7-repo

1.1.备份本地yum源

[root@localhost ~]# mv /etc/yum.repos.d/CentOS-Base.repo  /etc/yum.repos.d/CentOS-Base.repo.bak

1.2.下载阿里云的yum源

[root@localhost yum.repos.d]# wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
--2023-03-12 17:24:42--  http://mirrors.aliyun.com/repo/Centos-7.repo
正在解析主机 mirrors.aliyun.com (mirrors.aliyun.com)... 117.169.106.235, 117.169.106.236, 117.169.106.237, ...
正在连接 mirrors.aliyun.com (mirrors.aliyun.com)|117.169.106.235|:80... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:2523 (2.5K) [application/octet-stream]
正在保存至: “/etc/yum.repos.d/CentOS-Base.repo”

100%[===============>] 2,523       --.-K/s 用时 0.007s  

2023-03-12 17:24:43 (361 KB/s) - 已保存 “/etc/yum.repos.d/CentOS-Base.repo” [2523/2523])

#可选择执行或不执行
[root@localhost yum.repos.d]# yum clean all
[root@localhost yum.repos.d]# yum makecache

2.安装之前的环境检查

在Centos7的系统上默认是mariadb,如果要安装MySQL需要先把系统中存在的MySQL或者mariadb删除掉。

2.1.查看是否已经安装MySQL或mariadb,如果已经安装先删除

[root@localhost ~]# rpm -qa |grep mariadb
mariadb-server-5.5.60-1.el7_5.x86_64
mariadb-libs-5.5.60-1.el7_5.x86_64
mariadb-5.5.60-1.el7_5.x86_64
[root@localhost ~]# yum -y remove mariadb*

2.2.再次查看是否还有残留,如果有就删除

[root@localhost ~]# rpm -qa |grep mysql
qt-mysql-4.8.7-2.el7.x86_64
[root@localhost ~]# rpm -e qt-mysql-4.8.7-2.el7.x86_64

2.3.MySQL和mariadb都要查看

[root@localhost ~]# rpm -qa |grep maraidb

2.4.最后查看老版本中MySQL相关的安装目录

[root@localhost ~]# find / -name mysql
/etc/selinux/targeted/active/modules/100/mysql
/usr/lib64/mysql
/usr/lib64/perl5/vendor_perl/auto/DBD/mysql
/usr/lib64/perl5/vendor_perl/DBD/mysql
/usr/share/mysql
[root@localhost ~]# rm -rf /etc/selinux/targeted/active/modules/100/mysql
[root@localhost ~]# rm -rf /usr/lib64/mysql
[root@localhost ~]# rm -rf /usr/lib64/perl5/vendor_perl/auto/DBD/mysql
[root@localhost ~]# rm -rf /usr/lib64/perl5/vendor_perl/DBD/mysql
[root@localhost ~]# rm -rf /usr/share/mysql

三、MySQL编译环境准备

1.安装依赖包及项目目录

1.1.安装MySQL项目包存放目录

[root@localhost ~]# mkdir -p /usr/local/src/mysql

1.2.安装编译环境依赖包

[root@localhost ~]# yum -y install gcc gcc-c++ make glibc automake autoconf libtool  libssl-dev openssl openssl-devel

1.3.安装下载工具

[root@localhost ~]# cd /usr/local/src/mysql/
[root@localhost mysql]# yum -y install wget ca-certificates

注意:安装 ca-certificates 解决wget下载出的问题(颁发的证书已经过期。要以不安全的方式连接至 downloads.sourceforge.net,使用“–no-check-certificate”。)

2.需要的软件包

以下三个软件是需要自行下载和上传的:

  • boost_1_59_0.tar.gz

  • cmake-3.22.1.tar.gz

  • mysql-5.7.37.tar.gz

2.1.拓展及思考:

bootst 库:boost库是一个功能强大,构造精巧,跨平台的免费的C++开源库。它使得C++编程更优雅、更有活力、更高产,C++11的标准有三分之二来自boost库。

官网: http://www.boost.org/

截止2023年4月,最新的版本是1.80.0:

下载地址: https://boostorg.jfrog.io/artifactory/main/release/1.80.0/source/boost_1_80_0.tar.gz

在这里插入图片描述

2.2.cmake

CMake是一个跨平台的安装(编译)工具,可以用简单的语句来描述所有平台的安装(编译过程)。他能够输出各种各样的makefile或者project文件,能测试编译器所支持的C++特性。

当你用不同的语言或者编译器开发一个项目,code完之后要生成最终的输出(dll 或执行文件),这时候就尴尬了,你要手动去MingGW或者GCC下配置成千上万的.cpp .h .o .c…路劲和地址吗?这时候神器就出现了-----CMake!

下载网址:https://github.com/Kitware/CMake/releases/download/v3.22.1/cmake-3.22.1.tar.gz

以上软件包传到下面的路径中即可:

[root@localhost mysql]# pwd
/usr/local/src/mysql
[root@localhost mysql]# wget https://nchc.dl.sourceforge.net/project/boost/boost/1.59.0/boost_1_59_0.tar.gz --no-check-certificate
[root@localhost mysql]# ls
boost_1_59_0.tar.gz  cmake-3.22.1.tar.gz  mysql-5.7.37.tar.gz

3.安装cmake

3.1.安装cmake

[root@localhost mysql]# tar xf cmake-3.22.1.tar.gz 
[root@localhost mysql]# cd cmake-3.22.1
[root@localhost cmake-3.22.1]# ./bootstrap && gmake && gmake install

3.2.查看cmake版本

[root@localhost cmake-3.22.1]# cmake -version
cmake version 3.22.1

CMake suite maintained and supported by Kitware (kitware.com/cmake).

4.解压boost库到/usr/local/目录

[root@localhost mysql]# tar xf boost_1_59_0.tar.gz -C /usr/local/
[root@localhost mysql]# cd !$
cd /usr/local/
[root@localhost local]# mv boost_1_59_0/ boost
[root@localhost local]# cd boost/
[root@localhost boost]# ls -l
总用量 108
drwxr-xr-x 105 501 games  8192 8月  12 2015 boost
-rw-r--r--   1 501 games   850 8月  11 2015 boost-build.jam
-rw-r--r--   1 501 games 21920 8月  11 2015 boostcpp.jam
-rw-r--r--   1 501 games   989 8月  11 2015 boost.css
-rw-r--r--   1 501 games  6308 8月  11 2015 boost.png
-rw-r--r--   1 501 games  2477 8月  11 2015 bootstrap.bat
-rwxr-xr-x   1 501 games 10631 8月  11 2015 bootstrap.sh
drwx------   7 501 games    84 8月  12 2015 doc
-rw-r--r--   1 501 games   769 8月  11 2015 index.htm
-rw-r--r--   1 501 games  5476 8月  11 2015 index.html
-rw-r--r--   1 501 games   291 8月  11 2015 INSTALL
-rw-r--r--   1 501 games 10779 8月  11 2015 Jamroot
drwx------ 116 501 games  4096 8月  12 2015 libs
-rw-r--r--   1 501 games  1338 8月  11 2015 LICENSE_1_0.txt
drwxr-xr-x   4 501 games   159 8月  11 2015 more
-rw-r--r--   1 501 games  2608 8月  11 2015 rst.css
drwxr-xr-x   2 501 games   141 8月  11 2015 status
drwxr-xr-x  10 501 games   190 8月  11 2015 tools

四、编译安装MySQL

1.编译环境及相关目录

1.1.安装需要的依赖包

[root@localhost boost]# yum install -y ncurses-devel  gcc gcc-c++ ncurses bison make

1.2.创建MySQL相关的目录

[root@localhost2 boost]# mkdir -p /database/mysql/{data,tmp,binlog,logs}

1.3.创建用户组及MySQL用户

[root@localhost boost]# userdel -r mysql
userdel:用户“mysql”不存在
[root@localhost boost]# groupadd mysql
[root@localhost boost]# useradd mysql -s /sbin/nologin -M -g mysql
[root@localhost boost]# id mysql
uid=1000(mysql) gid=1000(mysql) 组=1000(mysql)

1.4.解压MySQL源码包

[root@localhost boost]# cd /usr/local/src/mysql/
[root@localhost mysql]# tar xf mysql-5.7.37.tar.gz

2.开始编译

2.1.切换目录

[root@localhost mysql]# cd mysql-5.7.37

2.2.开始编译

cmake . -DCMAKE_INSTALL_PREFIX=/database/mysql \
-DMYSQL_DATADIR=/database/mysql/data \
-DMYSQL_UNIX_ADDR=/database/mysql/tmp/mysql.sock \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DEXTRA_CHARSETS=gbk,gb2312,utf8,ascii \
-DENABLED_LOCAL_INFILE=ON \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITHOUT_PARTITION_STORAGE_ENGINE=1 \
-DWITH_FAST_MUTEXES=1 \
-DWITH_ZLIB=bundled \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_READLINE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DWITH_DEBUG=0 \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/boost

2.3.安装MySQL

[root@localhost mysql-5.7.37]# make install

五、启动MySQL前的准备

1.配置MySQL环境变量

[root@localhost mysql-5.7.37]# echo 'export PATH=/database/mysql/bin:$PATH' >> /etc/profile
[root@localhost mysql-5.7.37]# tail -1 /etc/profile   
export PATH=/database/mysql/bin:$PATH
[root@localhost mysql-5.7.37]# source /etc/profile  
[root@localhost mysql-5.7.37]# echo $PATH      
/database/mysql/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

2.初始化MySQL数据库

2.1.更改MySQL安装目录的属主和属组

[root@localhost mysql-5.7.37]# chown -R  mysql:mysql  /database/mysql/

2.2.修改MySQL配置文件的属组和属主

[root@localhost mysql-5.7.37]# mkdir -p /etc/my.cnf
[root@localhost mysql-5.7.37]# chown mysql:mysql  /etc/my.cnf

2.3.修改MySQL配置文件

[root@localhost mysql-5.7.37]# vim /etc/my.cnf

2.4.在配置文件中写入内容

# 写入如下内容(命令版):
[client]
port = 3306                         
socket = /database/mysql/mysql.sock
default-character-set = utf8

[mysqld]
port = 3306
server_id = 1
user = mysql
basedir = /database/mysql
datadir = /database/mysql/data
tmpdir = /database/mysql/tmp
socket = /database/mysql/mysql.sock
pid_file = /database/mysql/mysql.pid
character_set_server = utf8
max_connections = 100
max_connect_errors = 10
log_error = /database/mysql/logs/mysql_5_7_37.err
log_bin = /database/mysql/binlog/mysql-bin

上述含义解释:
# 写入如下内容(解释版):
[client]
port = 3306
# 连接端口号
socket = /database/mysql/mysql.sock
# 用于本地连接的socket套接字
default-character-set = utf8
# 编码

[mysqld]
port = 3306
# 服务端口号
server_id = 1
# MySQL服务的唯一编号,每个mysql服务ID需唯一
user = mysql
# 启动用户
basedir = /database/mysql
# mysql安装根目录
datadir = /database/mysql/data
# mysql数据文件所在位置
tmpdir = /database/mysql/tmp
# MySQL存放临时文件的目录
socket = /database/mysql/mysql.sock
# 为MySQL客户端程序和服务器之间的本地通讯指定一个套接字文件
pid_file = /database/mysql/mysql.pid
# pid文件所在目录
character_set_server = utf8
# 数据库默认字符集
max_connections = 100
# 最大连接数
max_connect_errors = 10
# 最大错误连接数
log_error = /database/mysql/logs/mysql_5_7_37.err
# mysql生成错误日志存放的路径
log_bin = /database/mysql/binlog/mysql-bin
# 开启二进制日志功能

2.5.初始化数据库

## 切换到路径
[root@localhost mysql]# pwd
/database/mysql
[root@localhost mysql]# ls
## data目录不能提前建,如果有,先删除
bin  binlog  docs  include  lib  LICENSE  logs  man  mysql-test  README  README-test  share  support-files  tmp

[root@localhost mysql]# ./bin/mysqld --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data

注释:

 生成初始化密码参数(5.7版本才有),必须添加(--initialize-insecure)
 设定初始化用户(--user=mysql)
 设定mysql工作目录(--basedir=/database/mysql)
 设定数据文件目录(--datadir=/database/mysql/data)

2.6.MySQL实例开启SSL连接

cd /database/mysql/
[root@localhost mysql]# bin/mysql_ssl_rsa_setup --initialize-insecure --user=mysql --basedir=/database/mysql --datadir=/database/mysql/data

2.7.修改server-key.pem文件权限

[root@localhost mysql]# cd /database/mysql/data/
[root@localhost data]# chmod +r server-key.pem
[root@localhost data]# ls -l server-key.pem
-rw-r--r--. 1 mysql mysql 1680 3月  21 19:19 server-key.pem

六、启动数据库

1.拷贝启动脚本到/etc/init.d/目录下

root@localhost data]# cd /database/mysql/
[root@localhost mysql]# cp support-files/mysql.server  /etc/init.d/mysql
[root@localhost mysql]# ls -l /etc/init.d/mysql
-rwxr-xr-x. 1 root root 10570 3月  21 19:20 /etc/init.d/mysql

2.重新加载系统服务,将MySQL数据库加入开机自启动

[root@localhost mysql]# systemctl daemon-reload
[root@localhost mysql]# systemctl enable mysql
mysql.service is not a native service, redirecting to /sbin/chkconfig.
Executing /sbin/chkconfig mysql on
[root@localhost mysql]# /sbin/chkconfig mysql on

3.启动MySQL数据库

[root@localhost mysql]# /etc/init.d/mysql start   # 开启
Starting MySQL. SUCCESS! 
或者
/etc/init.d/mysql stop    # 停止
/etc/init.d/mysql start

4.检查端口3306,mysql是否开启

[root@localhost mysql]# ps aux | grep mysqld

[root@localhost mysql]# lsof -i:3306
COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mysqld  59517 mysql   22u  IPv6  98960      0t0  TCP *:mysql (LISTEN)

七、登录测试

1.登录,此时没有密码,直接使用MySQL登录即可:

[root@localhost mysql]# mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.37-log Source distribution

Copyright (c) 2000, 2022, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> 

2.查看有哪些用户:

mysql> select user,host from mysql.user;
+---------------+-----------+
| user          | host      |
+---------------+-----------+
| mysql.session | localhost |
| mysql.sys     | localhost |
| root          | localhost |
+---------------+-----------+
3 rows in set (0.00 sec)

3.授权用户访问

mysql> grant all privileges on *.* to root@'%' identified by 'Lilinbo123!' with grant option;
Query OK, 0 rows affected, 1 warning (0.00 sec)

4.修改密码

mysql> alter user 'root'@'localhost' identified by 'Lilinbo123!';
Query OK, 0 rows affected (0.00 sec)

5.执行 flush privileges; 使密码生效

mysql> flush privileges;

mysql> quit
Bye

6.重新登录测试

[root@localhost ~]# mysql -uroot -pLilinbo123!
mysql: [Warning] Using a password on the command line interface can be insecure.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.32 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database test;
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| test             |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
5 rows in set (0.01 sec)

猜你喜欢

转载自blog.csdn.net/m0_67159981/article/details/129769570