​【香菇带你学Mysql】Linux下Mysql8使用rpm包安装教程【建议收藏】

2024-08-15 08:15:21 浏览数 (1)

【香菇带你学Mysql】Linux下Mysql8使用二进制安装包安装教程【建议收藏】

:warning: 本人声明:本教程可100%复现

网上看了很多Mysql8安装的方式,基本上都是都过一个yum方式直接访问公网下载依赖资源安装的。

但是在企业内部一般并不允许生产环境直接连接公网。针对此情况。本文将介绍如何在内网环境下使用二进制安装包本地安装方式来部署Mysql8。

使用二进制安装包安装相对编译安装简单快速很多

不过,若想使用编译安装Mysql8,请参考香菇另外一篇文章:mysql8.0编译安装图文教程

1. 本次实践介绍

1.1 本次实践规划

本人使用环境如下

Mysql8使用二进制安装包安装请尽量保证主机内存大于1G。存储空间大于20G。

hostname

IP地址

系统版本

内核版本

master

192.168.129.139

BigCloud Enterprise Linux For Euler release 21.10 (LTS-SP2)

4.19.90-2107.6.0.0100.oe1.bclinux.x86_64

1.2 本次实践简介

1.本次实践环境建议个人测试环境,生产环境请谨慎操作

2.本次实践为在在BClinux for euler 21.10下使用rpm包安装Mysql8.3版本

3.请尽量保证主机内存大于1G。存储空间大于20G。

1.3 二进制安装包安装Mysql的优缺点

特点

优点

缺点

安装速度

  • 快速安装,无需编译 - 预编译的包通常为常见配置优化
  • 可能不是针对特定硬件优化- 不支持某些特殊配置需求

兼容性

  • 适用于多种操作系统版本
  • 可能与系统上的其他软件包冲突

系统资源

  • 通常占用较少的磁盘空间
  • 性能可能不如从源代码编译的版本

自定义配置

  • 配置较为简单
  • 缺乏灵活性,不能在安装过程中进行深度定制

更新维护

  • 更新方便,通常通过包管理器自动更新
  • 自动更新可能导致服务中断

安全性

  • 可以利用操作系统的安全更新
  • 可能包含已知但未修复的安全漏洞

2. 本地准备环境配置

2.1 卸载已经安装的数据库

检查linux是否安装了mariadb和mysql数据库,新系统可能会自带mariadb数据库,mariadb数据库是MySQL的分支

当一个系统已经安装了MariaDB时,直接尝试安装MySQL可能会导致冲突

包依赖冲突:MariaDB和MySQL的某些文件可能具有相同的名称或路径,这会导致包管理器无法正确处理依赖关系。 服务冲突:两个数据库服务可能尝试监听相同的端口(通常是3306),这会导致服务启动失败或不稳定。 配置冲突:MariaDB和MySQL的配置文件可能位于相同的位置,比如/etc/my.cnf,这会使得配置混乱。

代码语言:bash复制
# 检查是否安装了mariadb
yum list installed | grep mariadb*
# 卸载mariadb
yum remove mariadb*
# 检查是否安装了mysql
yum list installed | grep mysql*
# 卸载mysql
yum remove mysql*

执行过程如下

代码语言:bash复制
[root@localhost ~]# yum list installed | grep mariadb*
mariadb-connector-c.x86_64                        3.0.6-7.oe1                                @anaconda
[root@localhost ~]# yum remove mariadb*
依赖关系解决。
=====================================================================================================
 Package                                             Architecture                           Version                                          Repository                                 Size
=====================================================================================================
移除:
 mariadb-connector-c                                 x86_64                                 3.0.6-7.oe1                                      @anaconda                                 414 k
移除依赖的软件包:
 rsyslog-relp                                        x86_64                                 8.2006.0-6.oe1                                   @anaconda                                  63 k
 rsyslog-help                                        noarch                                 8.2006.0-6.oe1                                   @anaconda                                 7.0 M

事务概要
=====================================================================================================
移除  9 软件包
将会释放空间:14 M
确定吗?[y/N]: Y
运行事务检查
事务检查成功。
运行事务测试
事务测试成功。
运行事务
  准备中  :                                                                                                                                                                              1/1 
  运行脚本: rsyslog-relp-8.2006.0-6.oe1.x86_64                                                                                                                                           1/1 
  删除    : rsyslog-relp-8.2006.0-6.oe1.x86_64                                                                                                                                           1/9                                                                                             9/9 
已移除:
  libestr-0.1.11-1.oe1.x86_64        libfastjson-0.99.8-3.oe1.x86_64   libnet-1.2-1.oe1.x86_64              librelp-1.2.16-3.oe1.x86_64          mariadb-connector-c-3.0.6-7.oe1.x86_64  
  net-snmp-libs-1:5.9-3.oe1.x86_64   rsyslog-8.2006.0-6.oe1.x86_64     rsyslog-help-8.2006.0-6.oe1.noarch   rsyslog-relp-8.2006.0-6.oe1.x86_64  
完毕!
[root@localhost ~]# yum list installed | grep mysql*
[root@localhost ~]# yum remove mysql*
未找到匹配的参数: mysql*
没有软件包需要移除。
依赖关系解决。
无需任何处理。
完毕!

2.2 配置yum源

注释:若Linux主机可以访问公网,则只需要配置好公网repo源即可,若无法连接公网,则需要配置好本地repo源。不同类型用户可能需求不一样。这里默认大家使用本地iso搭建镜像yum源。

其余情况请参考文章(已经足够详细)yum源配置,这一篇就够了!(包括本地,网络,本地共享yum源)

当服务器无法访问公网或者所需要依赖无法在公网获取,我们可以通过

使用挂载本地iso镜像来获取我们需要的rpm包和依赖

2.2.1 本机单机yum源配置

此处以挂载BClinux for openeuler 21.10镜像为例,每个人操作系统型号不同,请选择自己需要的版本

切记选择来源安全可靠的镜像下载

将下载好后的镜像上传到/mnt

代码语言:bash复制
 ls

/mnt目录下创建文件夹 BClinux

代码语言:bash复制
 mkdir BClinux

然后输入下面命令进行挂载

代码语言:bash复制
mount -o loop /mnt/BCLinux-for-Euler-21.10-everything-x86_64.iso /mnt/BClinux

下个步骤中,关闭selinux需要重启,会导致本命令失效,需要重新执行即可

2.2.2 repo文件配置

进入/etc/yum.repos.d/目录,

将之前的repo文件进行备份

代码语言:shell复制
# 进入repo配置文件
cd /etc/yum.repos.d/
# 将原来的repo文件进行备份
 mv /etc/yum.repos.d/* *.bak

然后创建新的repo源,输入以下命令

代码语言:shell复制
# 复制下面的脚本输入
 echo "
> [local]
> name=bendiyum
> baseurl=file:///mnt/BClinux/
> enabled=1
> gpgcheck=0" > local.repo

## 执行
yum clean all
yum makecache
yum repolist

配置完成

代码语言:bash复制
yum makecache
yum repolist

尝试使用yum

代码语言:shell复制
yum install -y tree
image-20230312171758375image-20230312171758375

本地yum源配置完成

2.3 关闭防火墙和selinux

关闭防火墙

代码语言:bash复制
# 查看防火墙是状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
#取消开机自启动
systemctl disable firewalld

关闭selinux

代码语言:bash复制
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
## 重启后生效

3. Mysql安装详解

本次香菇安装的Mysql版本为Mysql8.3.0

3.1 官网下载合适安装包

Mysql官网链接:https://downloads.mysql.com/archives/community/

查看本地主机glibc的版本

代码语言:bash复制
ldd --version
image-20240811223316994image-20240811223316994

根据官网提示信息选择合适的版本下载

image-20240811223407524image-20240811223407524

此处我选择的是mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz版本

大家的主机若可以直接访问公网,也可以通过在主机上输入命令的方式下载

代码语言:bash复制
cd /usr/local/src/ && wget https://downloads.mysql.com/archives/get/p/23/file/mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz
image-20240811223951929image-20240811223951929

否则,可以下载到本地,在上传到linux主机对应目录

3.2 安装Mysql8.3

3.2.1 配置安装路径

进入Mysql安装包下载的目录,将其移动到/usr/local/src下面

代码语言:bash复制
mv mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz /usr/local/src/

解压文件

代码语言:bash复制
sudo tar xvJf /usr/local/src/mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz
image-20240811224237938image-20240811224237938

修改文件名称

代码语言:bash复制
sudo mv  mysql-8.3.0-linux-glibc2.28-x86_64 mysql-8.3.0
image-20240811224533561image-20240811224533561

创建mysql相关文件夹

代码语言:bash复制
sudo mkdir -p /mysql/data  # 数据存储
sudo mkdir -p /mysql/log    # 日志存储
sudo mkdir -p /mysql/tmp    # 临时文件
image-20240811225442168image-20240811225442168
3.2.2 创建Mysql账户并赋权
代码语言:bash复制
# 新增主机用户Mysql
useradd -m mysql
# 配置密码,此处我设置的密码为Xianggu123
echo Xianggu123 |  passwd --stdin  mysql
image-20240811225341765image-20240811225341765

赋权给Mysql用户mysql安装权限和数据存放路径权限

代码语言:bash复制
chown -R mysql /usr/local/src/mysql-8.3.0
chown -R mysql:mysql  /mysql/data
chown -R mysql:mysql /mysql/log
chown -R mysql:mysql /mysql/tmp
image-20240811225722520image-20240811225722520
3.2.3 安装Mysql
代码语言:bash复制
在安装目录下执行
sudo /usr/local/src/mysql-8.3.0/bin/mysqld --user=mysql --basedir=/usr/local/src/mysql-8.3.0 --datadir=/mysql/data/ --initialize
image-20240811230010322image-20240811230010322

记住初始化密码

image-20240811230030571image-20240811230030571
3.2.4 Mysql配置文件修改

正常情况下是没有这个文件的,执行保存之后会自动创建

创建并编辑my.cnf文件

代码语言:bash复制
vi /etc/my.cnf

配置文件内容如下(文件路径记得改为自己的)

代码语言:bash复制
[mysqld]
# 设置 MySQL 服务的端口号,默认为 3306
port = 3306

# 设置 MySQL 服务的安装目录
basedir = /usr/local/src/mysql/

# 设置 MySQL 数据库的数据存放目录
datadir = /mysql/data

# 设置允许连接的最大客户端数量
max_connections = 200

# 设置每个连接使用的缓冲区大小
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M

# 启用查询缓存
#query_cache_type = 1
#query_cache_size = 16M

# 日志相关配置
log_error = error.log
#slow_query_log = 1
#slow_query_log_file = /mysql/log/slow_query.log
#long_query_time = 10  # 超过 10 秒的查询被视为慢查询

[mysqld]
# 设置默认字符集
character-set-server = utf8mb4

# 设置连接字符集
collation-server = utf8mb4_unicode_ci
socket=/tmp/mysql.sock

[mysqld]
# InnoDB 缓冲池大小
innodb_buffer_pool_size = 128M

# InnoDB 日志文件大小
innodb_log_file_size = 64M

# InnoDB 日志文件数量
innodb_log_files_in_group = 2

# InnoDB 自动扩展表空间
innodb_autoextend_increment = 64M
3.2.5 将mysql注册为系统服务
代码语言:bash复制
sudo cp -a /usr/local/src/mysql-8.3.0/support-files/mysql.server  /usr/lib/systemd/system
chown 775 /usr/lib/systemd/system/mysql.server 

# 设置启动mysql
systemctl start mysql
# 设置开机自动启动
systemctl enable mysql
3.2.6 将Mysql添加到系统环境变量中
代码语言:bash复制
# 编辑文件
vi /etc/profile
# 在末尾添加下面内容
export PATH=$PATH:/usr/local/src/mysql/bin

4. Mysql服务初始化配置

4.1 初始化Mysql

首先将mysql相关路径的权限赋给mysql主机用户

代码语言:bash复制
chown -R mysql:mysql /mysql

启动Mysql服务

代码语言:bash复制
systemctl start mysql

查看mysql状态

代码语言:bash复制
systemctl status mysql
image-20240814222833279image-20240814222833279

进入mysql主机用户,登录mysql

代码语言:bash复制
# 切换到mysql用户
su - mysql
# 登录mysql
mysql -uroot -p
image-20240814223330716image-20240814223330716

更改初始密码

代码语言:sql复制
#我这里改成了Xianggu@123
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Xianggu@123'; 
flush privileges;

设置允许远程登录

代码语言:sql复制
use mysql;
# 允许所有主机登录root
update  user set  host="%" where user='root'
flush privileges;
image-20240814230105602image-20240814230105602

4.2 远程连接测试

选择一个常用的数据库登录工具,此处我用的是VScode

image-20240814231828006image-20240814231828006

可以看到已经连接成功

image-20240814231928280image-20240814231928280

编写sql语句进行测试

代码语言:bash复制
create database xianggu;
use xianggu;
create table student (name varchar(50),age int,id int);
image-20240814232424536image-20240814232424536
image-20240814232411324image-20240814232411324

5.总结

经过一系列的操作,我们成功地在内网环境中使用二进制安装包完成了 MySQL 8.3 版本的安装和基本配置。通过本教程,您应该能够了解如何在没有公网访问的情况下进行 MySQL 的安装,这对于企业内部的部署来说非常实用。

安装步骤回顾:

  1. 环境准备:确认系统内存和存储空间满足要求,确保主机至少有 1GB 的内存和 20GB 的存储空间。
  2. 卸载旧版数据库:避免与已安装的 MariaDB 或 MySQL 发生冲突。
  3. 配置本地 yum 源:如果服务器无法访问公网,可以使用本地 ISO 镜像作为 yum 源来获取所需的 RPM 包和依赖。
  4. 安装 MySQL:下载并解压 MySQL 的二进制安装包,创建必要的文件夹,创建 MySQL 用户并赋予相应的权限。
  5. 初始化 MySQL 服务:通过指定用户、安装目录和数据目录等参数初始化 MySQL 服务,并记录生成的初始密码。
  6. 配置 MySQL:创建并编辑 my.cnf 文件,对 MySQL 进行必要的配置,如端口、数据目录、最大连接数等。
  7. 注册为系统服务:将 MySQL 注册为系统服务,并设置开机自启。
  8. 环境变量配置:将 MySQL 的二进制路径添加到系统环境变量中。
  9. 服务初始化:设置初始密码,开启远程连接功能,并启动 MySQL 服务。

使用二进制安装包安装 MySQL 是一种快速简便的方法,特别适合于那些无法直接连接公网的内网环境。这种方式不仅简化了安装流程,还减少了编译的时间。通过以上步骤,您可以轻松地在 BigCloud Enterprise Linux For Euler 21.10 上安装并配置 MySQL 8.3 版本,从而满足您的数据库需求。

0 人点赞