帮助中心 >  行业资讯 >  云计算 >  Linux离线安装MySQL数据库

Linux离线安装MySQL数据库

2025-03-03 09:59:02 317

在数据安全要求极高的内网环境中,或是有自定义数据库安装需求时,离线安装 MySQL 显得尤为重要。本文将以 CentOS 7.9 系统搭配 MySQL 8.0 版本为例,详细介绍每一步安装流程,确保你能顺利完成 MySQL 的离线部署。

安装详细过程
1、卸载mariadb数据库

# 查询CentOS系统中是否存在mariadb数据库
[root@localhost ~]# rpm -qa | grep mariadb
# 如果存在,卸载mariadb数据库
[root@localhost ~]# rpm -e --nodeps mariadb-libs-*

语法:shell语法中,#代表注释,*匹配任意长度字符

语法:rpm {-q|-V|-i|-U|-F|-e} [-option] packagename,RPM软件包管理器,-q表示查询,-a表示所有软件包,-e表示擦除,--nodeps表示不进行依赖项关系检查

2、上传MySQL压缩包

使用远程工具FinalShell,将mysql-8.0.28-el7-x86_64.tar.gz压缩包上传至/opt目录

图片

注意:开源软件可访问国内的阿里云镜像网站,例如MySQL压缩包的地址:https://www.landui.com/mysql/MySQL-8.0

3、解压MySQL压缩包

将MySQL压缩包解压到/usr/local目录

[root@localhost ~]# tar -zxvf /opt/mysql-8.0.28-el7-x86_64.tar.gz -C /usr/local

4、重命名MySQL根目录

将MySQL安装根目录重命名为mysql

[root@localhost ~]# mv /usr/local/mysql-8.0.28-el7-x86_64/ /usr/local/mysql/

5、创建data目录

/usr/local/mysql目录下创建data目录

[root@localhost ~]# mkdir /usr/local/mysql/data

6、设置环境变量

a.编辑/etc/profile文件

#编辑/etc/profile文件
[root@localhost ~]# vim /etc/profile
#文件最后一行添加
export PATH=/usr/local/mysql/bin:$PATH
#按esc键后保存并退出
:wq

b.重载/etc/profile文件

[root@localhost ~]# source /etc/profile

c.查看PATH值,确认环境变量是否成功刷新

[root@localhost ~]# echo $PATH
/usr/local/mysql/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin

7、修改MySQL配置文件

a.查询MySQL帮助,获取帮助手册里的配置文件读取顺序优先级信息

[root@localhost ~]# mysql --help | grep my.cnf
                     order of preference, my.cnf, $MYSQL_TCP_PORT,
/etc/my.cnf /etc/mysql/my.cnf /usr/local/mysql/etc/my.cnf ~/.my.cnf

b.新建或编辑读取顺序优先的配置文件

[root@localhost ~]# vim /etc/my.cnf

c.配置文件里输入详细的自定义配置信息,并保存

[mysql]
# 设置mysql客户端默认字符集
default-character-set=utf8

[mysqld]
# 设置mysql服务端字符集,默认为latin1
character-set-server=UTF8MB4
# 设置mysql服务端端口
port=3306
socket=/tmp/mysql.sock
# 设置mysql服务端根目录
basedir=/usr/local/mysql
# 设置mysql服务端数据存放目录
datadir=/usr/local/mysql/data
# 设置mysql服务端最大连接数
max_connections=200
# 设置mysql服务端默认存储引擎
default-storage-engine=INNODB
# 设置mysql服务端密码永不过期
default_password_lifetime=0
# 设置mysql服务端接受的数据包大小
max_allowed_packet=16M

8、新增用户与用户组

a.新增mysql用户组

[root@localhost ~]# groupadd mysql

语法:groupadd [-option] groupaccount,创建一个新的用户组账号

b.新增mysql用户,并添加到mysql用户组

[root@localhost ~]# useradd -r -g mysql mysql

语法:useradd [-option] useraccount,创建一个新的用户账号,-r表示新建一个系统账号,-g表示用户初始所属用户组

c.更改mysql目录所归属的用户和用户组

[root@localhost ~]# chown -R mysql:mysql /usr/local/mysql

语法:chown [-option] [owner][[:group]] file,改变文件所属的用户和用户组,-R表示文件和目录所属递归生效

用户和用户组更改生效后的目录

image.png


9、初始化MySQL数据库

# 初始化MySQL数据库
[root@localhost ~]# mysqld --initialize --user=mysql

# 初始化过程,临时密码在最后一行
2024-01-21T12:01:32.648018Z 0 [System] [MY-013169] [Server] /usr/local/mysql/bin/mysqld (mysqld 8.0.28) initializing of server in progress as process 29268
2024-01-21T12:01:32.675005Z 1 [System] [MY-013576] [InnoDB] InnoDB initialization has started.
2024-01-21T12:01:33.739030Z 1 [System] [MY-013577] [InnoDB] InnoDB initialization has ended.
2024-01-21T12:01:36.888800Z 6 [Note] [MY-010454] [Server] A temporary password is generated for root@localhost: rL1=sh(GA_yo

注意:rL1=sh(GA_yo为初始化产生的临时密码,随机产生

10、安装MySQL数据库证书

a.安装SSL证书和RSA密钥对文件

[root@localhost ~]# mysql_ssl_rsa_setup --datadir=/usr/local/mysql/data

语法:mysql_ssl_rsa_setup [-option],安装SSL证书和RSA密钥对文件,--datadir表示检查SSL和RSA文件目录,如果文件丢失,将重新创建文件

b.为所有用户添加证书的读取权限

[root@localhost ~]# chmod -R a+r /usr/local/mysql/data/server-key.pem

语法:chmod [-option] mode[,mode] file ,改变文件的权限,-R表示文件和目录所属递归生效,a表示所有用户,+表示添加权限,r表示读取权限

11、设置MySQL开机启动

a.复制mysql服务端脚本到系统启动时执行脚本的目录下

[root@localhost ~]# cp /usr/local/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld

b.为启动脚本添加执行权限

[root@localhost ~]# chmod +x /etc/rc.d/init.d/mysqld

c.将mysqld服务添加至系统服务

[root@localhost ~]# chkconfig --add mysqld

语法:chkconfig [-option] servicename,更新或查询系统服务的运行级别

d.查询mysqld服务,确认服务运行级别状态

[root@localhost ~]# chkconfig --list mysqld

# mysqld服务的运行级别状态,0表示系统停机模式;1表示单用户模式;2表示多用户模式,没有网络支持;3表示完整的多用户模式,有网络支持;4表示未使用;5表示开启图形化模式;6表示系统重启模式
mysqld          0:关    1:关    2:开    3:开    4:开    5:开    6:关

e.启动mysqld服务

[root@localhost init.d]# service mysqld start
Starting MySQL SUCCESS!

12、服务器防火墙开放端口

a.防火墙添加开放端口

[root@localhost ~]# firewall-cmd --zone=public --add-port=3306/tcp --permanent
success

语法:firewall-cmd [-option],防火墙命令行客户端工具,--zone表示作用区域,--add-port表示添加端口和协议,--permanent表示永久生效,--reload表示重新加载

b.修改配置文件后,重新加载防火墙

[root@localhost ~]# firewall-cmd --reload
success

13、操作MySQL数据库

# a.初次访问MySQL数据库,用临时密码登录
[root@localhost ~]# mysql -uroot -p
Enter password:
# 下面这个提示说明已成功登录数据库
mysql>

# b.修改用户密码
mysql> alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.02 sec)

# c.切换数据库
mysql> use mysql;
Database changed

# d.开启远程连接,默认状态不开启
mysql> update user set host = '%' where user = 'root';
Query OK, 1 row affected (0.02 sec)
Rows matched: 1  Changed: 1  Warnings: 0

# 如果使用第三方客户端远程连接MySQL数据库,修改密码时要指定编码集
mysql> alter user 'root'@'%' identified with mysql_native_password by 'root';
Query OK, 0 rows affected (0.02 sec)

# e.刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.02 sec)

# f.退出数据库
mysql> quit
Bye

14、MySQL数据库密码重置

MySQL初始化的临时密码无效,或忘记了登录密码,可以重置密码

# a.停止mysqld服务
[root@localhost ~]# service mysqld stop
Shutting down MySQL. SUCCESS!

# b.编辑MySQL配置文件
[root@localhost ~]# vim /etc/my.cnf

# c.配置文件里[mysqld]后任意一行添加skip-grant-tables
[mysqld]
# 跳过密码验证请去除下一行前面的注释#,适用场景:重置密码场景
skip-grant-tables

# d.配置文件保存并退出
:wq  

# e.启动mysqld服务
[root@localhost ~]# service mysqld start
Starting MySQL.. SUCCESS!

# f.无密码验证方式登录MySQL数据库
[root@localhost ~]# mysql -uroot
Welcome to the MySQL monitor.  Commands end with ; or \\g.
# 下面这个提示说明已成功登录数据库
mysql>

# g.刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

# h.修改用户密码
mysql> alter user 'root'@'localhost' identified by 'root';
Query OK, 0 rows affected (0.02 sec)

# i.刷新权限
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)

# j.退出数据库
mysql> quit
Bye

# k.停止mysqld服务
[root@localhost ~]# service mysqld stop
Shutting down MySQL. SUCCESS!

# l.编辑MySQL配置文件
[root@localhost ~]# vim /etc/my.cnf

# m.配置文件里[mysqld]后的skip-grant-tables删除或注释处理
[mysqld]
# 跳过密码验证请去除下一行前面的#,重置密码时使用
# skip-grant-tables

# n.配置文件保存并退出
:wq  

通过上述详尽步骤,你已成功在 CentOS 7.9 系统中离线安装 MySQL 8.0。若在操作中遇到任何问题,可前往蓝队云官网技术支持库查阅,也能直接咨询蓝队云获取帮助。蓝队云还为大家准备了运维工具包,助力你在 Linux 运维领域不断精进。

提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题: