安装前的环境准备工作和说明

1.系统版本和安装规划:

Linnux系统和MySQL版本

Linnux:CentOS-7-x86_64-Minimal-2009

MySQL:mysql-5.7.36

mysql下载路径:/opt/tools

mysql安装路径:/app/mysql

系统环境:

[root@localhost ~]# cat /etc/redhat-release  
CentOS Linux release 7.9.2009 (Core)
[root@localhost ~]#


2.安装说明

Linux中MySQL常见安装方式

①.rpm包二进制安装    

②.源码编译安装    

本次安装选择②源码安装,可按需定制编译,最灵活,可以安装到自己想要安装的目录。


一、清理删除旧版本安装包或残留

1.查找mysql相关安装

[root@localhost ~]# rpm -qa | grep -i mysql
[root@localhost ~]# yum list installed | grep mysql // 第二种方式yum,推荐用这个方式

若查询到mysql,则一个一个卸载

[root@localhost ~]# rpm –e {mysql包名},如:

[root@localhost ~]# rpm -e mysql-community-common-5.7.23-1.el7.x86_64

# 如果使用上面命令删除时,提示有依赖的其它文件,则用如下命令只删除mysql套件

[root@localhost ~]# rpm -e --nodeps {mysql包名}

[root@localhost ~]# rpm -e --nodeps 强制接卸(--nodeps 不检查依赖关系;--force 强制安装)

[root@localhost ~]# rpm删除时如果有依赖关系,可以用yum remove + 包名来删除


2.查看系统自带的Mariadb

[root@localhost ~]# rpm -qa | grep -i mariadb
[root@localhost ~]# yum list installed | grep mariadb // 第二种方式yum,推荐用这个方式

若查询到mariadb,则一个一个卸载

[root@localhost ~]# rpm -e --nodeps {mariadb包名},如:

[root@localhost ~]# rpm -e --nodeps mariadb-libs-5.5.68-1.el7.x86_64


3.查找老版本mysql相关的安装目录命令

[root@localhost ~]# find / -name mysql

若查找到相关目录使用命令:rm –rf {目录名},如:

[root@localhost ~]# rm -rf /etc/selinux/targeted/active/modules/100/mysql
[root@localhost ~]# rm -rf /usr/lib64/mysql

删除卸载完之后再检查确认下

[root@localhost ~]# find / -name mysql
[root@localhost ~]# rpm -qa | grep -i mysql
[root@localhost ~]# rpm -qa | grep -i mariadb

如没有查到,则卸载删除完成


4.确认清理安装环境(防止漏网之鱼)

[root@localhost ~]# yum erase mariadb mariadb-server mariadb-libs mariadb-devel -y
[root@localhost ~]# userdel -r mysql
[root@localhost ~]# rm -rf /etc/my*
[root@localhost ~]# rm -rf /var/lib/mysql


二、安装依赖

sudo yum install -y wget vim gcc gcc-c++ make cmake ncurses ncurses-devel bison openssl openssl-devel boost-devel libtirpc libtirpc-devel

//wget,用于下载源码包;vim,后面编辑配置文件用到;其他是安装mysql用到的环境依赖,也都装上。


三、下载和解压源码包

1.源码包相关说明:

mysql官方下载地址:​​https://downloads.mysql.com/archives/community/​​​

如下图,我们要源码编译安装

选择mysql-5.7.36.tar.gz或者mysql-boost-5.7.36.tar.gz(这个MySQL源码包里包含了boost)

如果选择mysql-5.7.36.tar.gz这个源码包,就必须要下载一个boost库包boost_1_59_0.tar(否则预编译时会通不过报错)。

Linux系统CentOS7源码编译安装mysql-5.7.36_mysql安装

mysql-5.7.36.tar.gz官方下载地址:

​https://downloads.mysql.com/archives/get/p/23/file/mysql-5.7.36.tar.gz​​​

boost_1_59_0第三方下载地址:

​http://www.sourceforge.net/projects/boost/files/boost/1.59.0/boost_1_59_0.tar.gz​​​

mysql-boost-5.7.36.tar.gz官方下载地址:

​https://downloads.mysql.com/archives/get/p/23/file/mysql-boost-5.7.36.tar.gz​


注:在Linux下wget国内速度下载可能较慢,可从第三方镜像市场下载,这里提供网易镜像下载地址:

mysql-5.7.36.tar.gz:

​http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-5.7.36.tar.gz​​​

boost_1_59_0.tar.gz:

​http://mirrors.linuxeye.com/oneinstack/src/boost_1_59_0.tar.gz​​​(LinuxEye开源镜像)

mysql-boost-5.7.36.tar.gz:

​http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-boost-5.7.36.tar.gz​


2.下载mysql源码包

①.在Linux下创建一个源码包下载目录:

[root@localhost ~]# mkdir /opt/tools  #创建目录
[root@localhost ~]# cd /opt/tools/ #进入目录
[root@localhost tools]# ls #查看目录下文件
[root@localhost tools]# pwd #查看该目录路径
/opt/tools
[root@localhost tools]#

②.在该目录路径下直接下载源码包:

[root@localhost tools]# wget http://mirrors.163.com/mysql/Downloads/MySQL-5.7/mysql-boost-5.7.36.tar.gz

#鉴于boost在Linux中用wget不太好下载或者下载较慢,本次安装直接选择mysql-boost-5.7.36.tar.gz这个源码包比较方便,不用再下载单独的boost库包。

#我这里直接从网易镜像下载,等下载完成后,在tools目录下查看到源码包已下载好。

[root@localhost tools]# ls  
mysql-boost-5.7.36.tar.gz
[root@localhost tools]#


-------------从本地上传源码包到Linux-------------

如果不需要在Linux上直接下载源码包,需要从本地电脑上上传,可以用Xshell 软件的sftp上传。

打开Xshell软件,在窗口上输入:

sftp root@192.168.2.132  #连接到Linux


lcd d:\mysql  #切换到本地电脑源码包目录

lls  #可查看进入到当前目录下的文件


cd /opt/tools  #切换到Linux的相关目录(前提是Linux下要有这个目录,如没有,先自己创建一个目录)

ls  #可查看进入到当前目录下的文件


put d:\mysql\mysql-boost-5.7.36.tar.gz  #从本地电脑目录上传文件到当前进入的Linux目录

put d:\mysql\mysql-5.7.36.tar.gz             #从本地电脑目录上传文件到当前进入的Linux目录

put d:\mysql\boost_1_59_0.tar.gz            #从本地电脑目录上传文件到当前进入的Linux目录

-------------从本地上传源码包到Linux-------------


3.解压mysql源码包

[root@localhost ~]# mkdir /opt/tools   #进入前目录,如果已在当前目录,可忽略
[root@localhost ~]# tar -zxvf mysql-boost-5.7.36.tar.gz #解压源码包
[root@localhost tools]# ls #查看到已解压好
mysql-5.7.36 mysql-boost-5.7.36.tar.gz
[root@localhost tools]# cd mysql-5.7.36/ #进入到已解压的源码包目录
[root@localhost mysql-5.7.36]# ls #可已查到该目录下有个boost目录

boost的路径:

/opt/tools/mysql-5.7.36/boost (先记下这个路径,等下后面预编译用到)


四、源码编译安装

1.预编译(设置编译参数)

#注意是在解压好的源码包mysql-5.7.36这个路径下执行。

[root@localhost mysql-5.7.36]# cmake . -DCMAKE_INSTALL_PREFIX=/app/mysql \
-DMYSQL_DATADIR=/app/mysql/data \
-DMYSQL_UNIX_ADDR=/app/mysql/tmp/mysql.sock \
-DDOWNLOAD_BOOST=1 \
-DWITH_BOOST=/usr/local/src/boost \
-DDEFAULT_CHARSET=utf8 \
-DDEFAULT_COLLATION=utf8_general_ci \
-DWITH_EXTRA_CHARSETS=all \
-DWITH_INNOBASE_STORAGE_ENGINE=1 \
-DWITH_FEDERATED_STORAGE_ENGINE=1 \
-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
-DWITHOUT_EXAMPLE_STORAGE_ENGINE=1 \
-DWITH_ZLIB=bundled \
-DWITH_SSL=system \
-DENABLED_LOCAL_INFILE=1 \
-DWITH_EMBEDDED_SERVER=1 \
-DENABLE_DOWNLOADS=1 \
-DWITH_DEBUG=0

#以上是要设置的一些参数,比如mysql的安装目录,boost的路径等。

#根据个人需要设置安装路径,以及boost的路径。

等执行完成之后,看到如下内容,表示执行成功。

-- Configuring done
-- Generating done
-- Build files have been written to: /opt/tools/mysql-5.7.36
[root@localhost mysql-5.7.36]#

#如果 CMake 失败,为了防止使用旧的目标文件或配置信息,请运行以下命令,然后重新运行 CMake :

[root@localhost mysql-5.7.36]# make clean
[root@localhost mysql-5.7.36]# rm CMakeCache.txt


2.编译安装

[root@localhost mysql-5.7.36]# make && make install

#等待漫长的执行,这个时间有点长,要看Linux的硬件配置和网络情况,一直要等到执行完成。

#如果上述预编译和编译操作过程中未出现错误(每个步骤结束后,都可以使用echo $?看返回值是否为0,为0则表示正确)

[root@localhost mysql-5.7.36]# echo $?
0
[root@localhost mysql-5.7.36]#

#再查看/app/mysql/目录,如果该目录下有内容,则表示mysql-5.7.36源代码包采用cmake方式安装成功了。

[root@localhost ~]# cd /app/mysql/
[root@localhost mysql]# ls
bin docs include lib LICENSE man mysql-test README README-test share support-files
[root@localhost mysql]#


五、创建mysql用户

[root@localhost ~]# groupadd mysql   # 添加组myql
[root@localhost ~]# useradd -r -g mysql -s /sbin/nologin -M mysql # 添加用户mysql到mysql组中
[root@localhost ~]# id mysql # 查看mysql id

如下:

[root@localhost mysql]# cd
[root@localhost ~]# id mysql
id: mysql: no such user
[root@localhost ~]# groupadd mysql
[root@localhost ~]# useradd -r -g mysql -s /sbin/nologin -M mysql
[root@localhost ~]# id mysql
uid=998(mysql) gid=1000(mysql) 组=1000(mysql)
[root@localhost ~]#


六、创建安装目录和文件

[root@localhost ~]# mkdir -p /app/mysql  #安装目录在编译时已自动生成,可不用再创建。
[root@localhost ~]# mkdir -p /app/mysql/tmp
[root@localhost ~]# mkdir -p /app/mysql/log
[root@localhost ~]# touch /app/mysql/log/mysql.log #创建日志文件,否则后面初始化时会报错。

#创建的tmp和log以及mysql.log根据自己需要设置,这里是配合下面的my.cnf用到。


七、修改目录权限

[root@localhost ~]# chown -R mysql:mysql /app/mysql
[root@localhost ~]# chown mysql.mysql /app/mysql/tmp
[root@localhost ~]# chown mysql.mysql /app/mysql/log/mysql.log


八、创建和配置my.cnf文件和环境变量

1.my.cnf配置文件

[root@localhost ~]# vim /etc/my.cnf   #编辑my.cnf文件
[mysqld]
# 安装目录
basedir=/app/mysql
# 存放数据的目录
datadir=/app/mysql/data
# 指定端口号
port=3306
#timestamp 参数开启,否则初始化时会报错
explicit_defaults_for_timestamp=1
# 指定Socket文件存放路径
socket=/app/mysql/tmp/mysql.sock
# 指定默认的字符集编码
character-set-server=utf8
# MySQL错误日志路径
log-error=/app/mysql/log/mysql.log
# 指定MySQL pid文件路径
pid-file=/app/mysql/mysql.pid
[mysql]
socket=/app/mysql/tmp/mysql.sock
[client]
socket=/app/mysql/tmp/mysql.sock

#进入vim编辑器后,按 键,把上面内容复制粘贴好,然后按Esc键,再输入:":wq"保存退出(双引号里面的内容,不包括双引号哦)


2.配置环境变量

两种方式,看个人喜好选择一种即可。

①.方式1

[root@localhost ~]# vim /etc/profile.d/mysql.sh   #vim编辑mysql.sh文件
export PATH=$PATH:/app/mysql/bin

#复制以上加入环境变量,vim编辑器操作见上面说明.

source /etc/profile.d/mysql.sh   #重新加载
echo $PATH #查看环境变量


②.方式2

echo "export PATH=/app/mysql/bin/:$PATH" >> /etc/profile  #直接写入环境变量
source /etc/profile #重新加载
echo $PATH #查看环境变量


九、初始化数据库和启动服务

1.初始化数据库

#注意路径不要搞错了~,这里应该是执行myql的安装目录下的bin目录文件,而不是下载解压的目录,为了不搞混淆,我这直接写死了bin下的完整路径。

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

#--initialize  #生成随机的初始root密码

#--initialize-insecure  #不会生成root密码,登录连接后,使用ALTER USER语句分配新的root密码。

#我这里直接选择不生成密码,等到后面登录到mysql再直接分配。


2.配置启动脚本,并启动服务

[root@localhost ~]# cp /app/mysql/support-files/mysql.server /etc/init.d/mysqld   #mysql启动关闭添加到 /etc/init.d/mysqld
[root@localhost ~]# systemctl daemon-reload #重新加载
[root@localhost ~]# systemctl start mysqld #启动mysql
[root@localhost ~]# systemctl stop mysqld #关闭mysql
[root@localhost ~]# service mysqld status #查看mysql运行状态

[root@localhost ~]# service mysqld status
ERROR! MySQL is not running
#若关闭后查看mysql没有运行

[root@localhost ~]# service mysqld status
SUCCESS! MySQL running (41629)
#若启动后查看mysql正常运行


十、登录mysq修改分配密码和查看数据库

1.首次登录

[root@localhost ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.36 Source distribution
Copyright (c) 2000, 2021, 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>

#由于初始化时没有生成密码,首次登录要求输入密码时,直接回车后就登录到mysql了。

#在这里可以看到mysql相关的信息,比如版本,还有mysql的一些辅助信息。


2.修改密码

mysql> alter user root@localhost identified by '123456';

mysql> exit #退出后再重新用刚设置的密码就可以登录mysql了。

[root@localhost ~]# mysql -uroot -p
Enter password:


3.查看数据库

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)

至此,mysql已安装完成。


附加:配置远程登录授权

[root@localhost ~]# firewall-cmd --permanent --add-port=3306/tcp   #开放3306端口
[root@localhost ~]# firewall-cmd --reload #重启防火墙
[root@localhost ~]# firewall-cmd --list-all #查看防火墙
[root@localhost ~]# mysql -uroot -p #登录到mysql
Enter password:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION; #远程连接授权
mysql> flush privileges; #刷新授权
mysql> exit; #退出mysql

完成以上后,用数据库连接工具Navicat 测试远程登录正常。

Linux系统CentOS7源码编译安装mysql-5.7.36_mysql安装_02