当前位置: 首页 > news >正文

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

⚠️ 本人声明:本教程可100%复现​

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

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

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

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

1. 本次实践介绍

1.1 本次实践规划

本人使用环境如下

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

hostnameIP地址系统版本内核版本
master192.168.129.139BigCloud 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可能会导致冲突

  1. 包依赖冲突:MariaDB和MySQL的某些文件可能具有相同的名称或路径,这会导致包管理器无法正确处理依赖关系。
  2. 服务冲突:两个数据库服务可能尝试监听相同的端口(通常是3306),这会导致服务启动失败或不稳定。
  3. 配置冲突:MariaDB和MySQL的配置文件可能位于相同的位置,比如/etc/my.cnf,这会使得配置混乱。
# 检查是否安装了mariadb
yum list installed | grep mariadb*
# 卸载mariadb
yum remove mariadb*
# 检查是否安装了mysql
yum list installed | grep mysql*
# 卸载mysql
yum remove mysql*

执行过程如下

[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 krsyslog-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

 ls

/mnt目录下创建文件夹 BClinux

 mkdir BClinux

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

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文件进行备份

# 进入repo配置文件
cd /etc/yum.repos.d/
# 将原来的repo文件进行备份mv /etc/yum.repos.d/* *.bak

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

# 复制下面的脚本输入echo "
> [local]
> name=bendiyum
> baseurl=file:///mnt/BClinux/
> enabled=1
> gpgcheck=0" > local.repo## 执行
yum clean all
yum makecache
yum repolist

配置完成

yum makecache
yum repolist

尝试使用yum

yum install -y tree

image-20230312171758375

本地yum源配置完成

2.3 关闭防火墙和selinux

关闭防火墙

# 查看防火墙是状态
systemctl status firewalld
# 关闭防火墙
systemctl stop firewalld
#取消开机自启动
systemctl disable firewalld

关闭selinux

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的版本

ldd --version

image-20240811223316994

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

image-20240811223407524

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

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

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-20240811223951929

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

3.2 安装Mysql8.3

3.2.1 配置安装路径

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

mv mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz /usr/local/src/

解压文件

sudo tar xvJf /usr/local/src/mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz

image-20240811224237938

修改文件名称

sudo mv  mysql-8.3.0-linux-glibc2.28-x86_64 mysql-8.3.0

image-20240811224533561

创建mysql相关文件夹

sudo mkdir -p /mysql/data  # 数据存储
sudo mkdir -p /mysql/log    # 日志存储
sudo mkdir -p /mysql/tmp    # 临时文件

image-20240811225442168

3.2.2 创建Mysql账户并赋权
# 新增主机用户Mysql
useradd -m mysql
# 配置密码,此处我设置的密码为Xianggu123
echo Xianggu123 |  passwd --stdin  mysql

image-20240811225341765

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

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-20240811225722520

3.2.3 安装Mysql
在安装目录下执行
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-20240811230010322

记住初始化密码

image-20240811230030571

3.2.4 Mysql配置文件修改

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

创建并编辑my.cnf文件

vi /etc/my.cnf

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

[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注册为系统服务
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添加到系统环境变量中
# 编辑文件
vi /etc/profile
# 在末尾添加下面内容
export PATH=$PATH:/usr/local/src/mysql/bin

4. Mysql服务初始化配置

4.1 初始化Mysql

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

chown -R mysql:mysql /mysql

启动Mysql服务

systemctl start mysql

查看mysql状态

systemctl status mysql

image-20240814222833279

进入mysql主机用户,登录mysql

# 切换到mysql用户
su - mysql
# 登录mysql
mysql -uroot -p

image-20240814223330716

更改初始密码

#我这里改成了Xianggu@123
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'Xianggu@123'; 
flush privileges;

设置允许远程登录

use mysql;
# 允许所有主机登录root
update  user set  host="%" where user='root'
flush privileges;

image-20240814230105602

4.2 远程连接测试

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

image-20240814231828006

可以看到已经连接成功

image-20240814231928280

编写sql语句进行测试

create database xianggu;
use xianggu;
create table student (name varchar(50),age int,id int);

image-20240814232424536

image-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 版本,从而满足您的数据库需求。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 案例分享—国外深色UI界面设计赏析
  • 使用 C++ 实现简单的插件系统
  • 程序员的最爱,FRP实现无公网IP的内网穿透,搭建远程服务:http、ssh、samba,基于最新FRP0.59.0版本
  • 【网络协议】网络劫持 - ARP/DNS欺骗篇
  • Windows11 WSL2 Ubuntu编译安装perf工具
  • 【C++深度探索】哈希表介绍与实现
  • 并查集-应用方向以及衍生汇总+代码实现(c++)-学习一个数据结构就会做三类大题!
  • 【QT常用技术讲解】多线程处理+全局变量处理异步事件并获取多个线程返回的结果
  • 【区块链+金融服务】广东省区域性股权市场区块链创新服务平台 | FISCO BCOS应用案例
  • git用法
  • 《Unity3D高级编程 主程手记》第四章 用户界面(六) UI 优化(上)
  • MySQL事务深度讲解
  • Unity + HybridCLR 从零开始
  • 第二十四天学习笔记2024.8.8
  • 十、OpenCVSharp 中的图像的几何变换
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • 2019年如何成为全栈工程师?
  • canvas 绘制双线技巧
  • hadoop集群管理系统搭建规划说明
  • iBatis和MyBatis在使用ResultMap对应关系时的区别
  • iOS 颜色设置看我就够了
  • Javascript基础之Array数组API
  • Laravel 中的一个后期静态绑定
  • tab.js分享及浏览器兼容性问题汇总
  • vue 配置sass、scss全局变量
  • 从0搭建SpringBoot的HelloWorld -- Java版本
  • 极限编程 (Extreme Programming) - 发布计划 (Release Planning)
  • 计算机在识别图像时“看到”了什么?
  • 京东美团研发面经
  • 前端代码风格自动化系列(二)之Commitlint
  • 实现菜单下拉伸展折叠效果demo
  • 微信小程序设置上一页数据
  • 用mpvue开发微信小程序
  • 积累各种好的链接
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # 深度解析 Socket 与 WebSocket:原理、区别与应用
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • #mysql 8.0 踩坑日记
  • #我与Java虚拟机的故事#连载12:一本书带我深入Java领域
  • (Charles)如何抓取手机http的报文
  • (html5)在移动端input输入搜索项后 输入法下面为什么不想百度那样出现前往? 而我的出现的是换行...
  • (附源码)ssm本科教学合格评估管理系统 毕业设计 180916
  • (四)linux文件内容查看
  • (五)MySQL的备份及恢复
  • (转)Sql Server 保留几位小数的两种做法
  • .bat批处理(三):变量声明、设置、拼接、截取
  • .Mobi域名介绍
  • .Net MVC4 上传大文件,并保存表单
  • .Net Redis的秒杀Dome和异步执行
  • .NET框架
  • .Net面试题4
  • /使用匿名内部类来复写Handler当中的handlerMessage()方法
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @vue/cli脚手架
  • [<MySQL优化总结>]