【香菇带你学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的分支
代码语言:bash复制当一个系统已经安装了MariaDB时,直接尝试安装MySQL可能会导致冲突
包依赖冲突:MariaDB和MySQL的某些文件可能具有相同的名称或路径,这会导致包管理器无法正确处理依赖关系。 服务冲突:两个数据库服务可能尝试监听相同的端口(通常是3306),这会导致服务启动失败或不稳定。 配置冲突: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*
执行过程如下
代码语言: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
中
ls
在/mnt
目录下创建文件夹 BClinux
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
本地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
的版本
ldd --version
根据官网提示信息选择合适的版本下载
此处我选择的是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
否则,可以下载到本地,在上传到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/
解压文件
代码语言:bash复制sudo tar xvJf /usr/local/src/mysql-8.3.0-linux-glibc2.28-x86_64.tar.xz
修改文件名称
代码语言:bash复制sudo mv mysql-8.3.0-linux-glibc2.28-x86_64 mysql-8.3.0
创建mysql相关文件夹
代码语言:bash复制sudo mkdir -p /mysql/data # 数据存储
sudo mkdir -p /mysql/log # 日志存储
sudo mkdir -p /mysql/tmp # 临时文件
3.2.2 创建Mysql账户并赋权
代码语言:bash复制# 新增主机用户Mysql
useradd -m mysql
# 配置密码,此处我设置的密码为Xianggu123
echo Xianggu123 | passwd --stdin mysql
赋权给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
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
记住初始化密码
3.2.4 Mysql配置文件修改
正常情况下是没有这个文件的,执行保存之后会自动创建
创建并编辑my.cnf
文件
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
进入mysql主机用户,登录mysql
代码语言:bash复制# 切换到mysql用户
su - mysql
# 登录mysql
mysql -uroot -p
更改初始密码
代码语言: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;
4.2 远程连接测试
选择一个常用的数据库登录工具,此处我用的是VScode
可以看到已经连接成功
编写sql语句进行测试
代码语言:bash复制create database xianggu;
use xianggu;
create table student (name varchar(50),age int,id int);
5.总结
经过一系列的操作,我们成功地在内网环境中使用二进制安装包完成了 MySQL 8.3 版本的安装和基本配置。通过本教程,您应该能够了解如何在没有公网访问的情况下进行 MySQL 的安装,这对于企业内部的部署来说非常实用。
安装步骤回顾:
- 环境准备:确认系统内存和存储空间满足要求,确保主机至少有 1GB 的内存和 20GB 的存储空间。
- 卸载旧版数据库:避免与已安装的 MariaDB 或 MySQL 发生冲突。
- 配置本地 yum 源:如果服务器无法访问公网,可以使用本地 ISO 镜像作为 yum 源来获取所需的 RPM 包和依赖。
- 安装 MySQL:下载并解压 MySQL 的二进制安装包,创建必要的文件夹,创建 MySQL 用户并赋予相应的权限。
- 初始化 MySQL 服务:通过指定用户、安装目录和数据目录等参数初始化 MySQL 服务,并记录生成的初始密码。
- 配置 MySQL:创建并编辑
my.cnf
文件,对 MySQL 进行必要的配置,如端口、数据目录、最大连接数等。 - 注册为系统服务:将 MySQL 注册为系统服务,并设置开机自启。
- 环境变量配置:将 MySQL 的二进制路径添加到系统环境变量中。
- 服务初始化:设置初始密码,开启远程连接功能,并启动 MySQL 服务。
使用二进制安装包安装 MySQL 是一种快速简便的方法,特别适合于那些无法直接连接公网的内网环境。这种方式不仅简化了安装流程,还减少了编译的时间。通过以上步骤,您可以轻松地在 BigCloud Enterprise Linux For Euler 21.10 上安装并配置 MySQL 8.3 版本,从而满足您的数据库需求。