参考过网上很多关于离线安装MySQL的文章,但是大多数都是标题党,对于很多内网的项目是没有网络的只能通过离线去安装,并且网上大部分文章安华给你的过程动不动就缺少环境依赖很烦,下面详细介绍一下离线安装的两种安装方式重点介绍tar包安装方式yum离线源安装请参考我的yum离线源有关文章
1_第一种是部署离线yum源的方式
2_第二种是tar包安装方式

这篇文章只介绍tar包安装方式

本人的安装环境为CentOS Linux release 7.5.1804 (Core)最小化安装,桌面版可参考其他文章

1 到mysql官网(https://dev.mysql.com/downloads/mysql/)下载5.7.25版本

2 查看系统中是否存的mariadb,如果存在,将其删除,即可以如下操作:

rpm -qa | grep mariadb

3 将mysql-5.7.25-linux-glibc2.12-x86_64.tar安装包上传到opt目录下,并依次执行如下的解压命令:(目录依照自己只需要更改相应的路径即可)

tar -xvf mysql-5.7.25-linux-glibc2.12-x86_64.tar

4 那么此时在opt目录就会mysql-5.7.25-linux-glibc2.12-x86_64目录,将该目录修改成mysql-5.7.25,即:

mv mysql-5.7.25-linux-glibc2.12-x86_64 mysql-5.7.25

5 创建mysql用户和组

groupadd mysql
useradd -g mysql mysql

6 设置密码

passwd mysql
依据提示设置密码

7 、创建数据库的数据目录、日志目录和临时目录,即:

# 数据目录
mkdir /opt/mysql-5.7.25/data
# 日志目录
mkdir /opt/mysql-5.7.25/log
# 临时目录
mkdir /opt/mysql-5.7.25/tmp

8 将mysql-5.7.25目录及子目录的所属用户及组都设置为mysql,即:

chown -R mysql:mysql /opt/mysql-5.7.25

9 在etc目录下创建my.cnf配置文件,即:

touch /etc/my.cnf
my.cnf的配置内容为:
[client]
port = 3306
socket = /opt/mysql-5.7.25/tmp/mysql.sock

[mysqld]
port = 3306
basedir = /opt/mysql-5.7.25
datadir = /opt/mysql-5.7.25/data
tmpdir  = /opt/mysql-5.7.25/tmp
socket = /opt/mysql-5.7.25/tmp/mysql.sock
pid-file = /opt/mysql-5.7.25/log/mysql.pid
log_error = /opt/mysql-5.7.25/log/error.log
slow_query_log_file = /opt/mysql-5.7.25/log/slow.log

10 初始化数据库:

/opt/mysql-5.7.25/bin/mysqld --initialize --user=mysql

11 设置开机自启动mysql服务:

cp /opt/mysql-5.7.25/support-files/mysql.server /etc/rc.d/init.d/mysqld
chmod +x /etc/rc.d/init.d/mysqld
chkconfig --add mysqld

12 启动MySQL

systemctl start mysqld.service

13 为mysql用户配置mysql的环境变量,即:

vi ~/.bash_profile
##添加如下内容
export PATH=$PATH:/opt/mysql-5.7.25/bin
##刷新配置文件
source ~/.bash_profile

14 获取mysql初始密码:

grep 'temporary password' /opt/mysql-5.7.25/log/error.log
##localhost后即为临时密码
##进入mysql 
mysql -u root -p
#输入临时密码进入mysql控制台并修改密码
set password for 'root'@'localhost'=password('密码');
#退出mysql
exit

15 给root用户赋权并开启root的远程登陆权限

#赋予root用户远程权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'0.0.0.0' IDENTIFIED BY '你的密码' WITH GRANT OPTION;
#刷新权限
flush privileges;
#开启远程连接权限
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'  IDENTIFIED BY '你的密码';
#再次刷新权限
flush privileges;
#创建数据库并指定utf-8字符集
CREATE DATABASE test(数据库名称) DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
use test;
#创建表
create table demo(id int(5),name varchar(20));
#添加数据
insert into demo(id,name) values(1,'张三');
#至此结束 通过navicat远程连接