Ubuntu 20.04 内网环境搞定 MySQL 8.0.26:一份保姆级的离线安装与配置指南
2026/6/8 4:21:28 网站建设 项目流程

Ubuntu 20.04 内网环境下的 MySQL 8.0.26 全链路部署实战

在企业级应用部署中,内网环境下的数据库安装往往是最令人头疼的环节之一。没有外网连接意味着无法实时下载依赖包,每个环节都需要预先精心准备。本文将带您深入探索如何在完全离线的 Ubuntu 20.04 系统中,完成 MySQL 8.0.26 的完整部署,包括依赖管理、安装顺序优化、配置文件调优以及后期维护方案。

1. 离线环境的前期准备工作

1.1 构建完整的离线资源库

在内网环境中部署 MySQL,首要任务是建立一个完整的离线资源库。这个资源库不仅需要包含 MySQL 8.0.26 的主安装包,还必须涵盖所有可能的依赖项。以下是必须准备的组件清单:

  • 主安装包mysql-server_8.0.26-1ubuntu20.04_amd64.deb-bundle.tar
  • 核心依赖
    • libaio1_0.3.112-5_amd64.deb
    • libmecab2_0.996-10build1_amd64.deb
  • 可选依赖(根据应用场景可能需要):
    • libnuma1_2.0.12-1build1_amd64.deb
    • libtinfo5_6.2-0ubuntu2_amd64.deb

提示:建议在准备阶段就下载这些软件包的备用版本,因为不同 Ubuntu 小版本可能需要特定版本的依赖包。

1.2 跨网络文件传输方案

在没有外网连接的环境中,我们需要可靠的跨网络文件传输方法。以下是几种经过验证的方案对比:

传输方式适用场景优点缺点
WinSCPWindows到Linux图形界面友好需要SSH服务已启用
rsyncLinux到Linux增量传输效率高命令行操作
USB介质物理隔离网络完全离线需要物理接触设备
内部文件服务器企业内网集中管理需要预先搭建

对于大多数场景,我推荐使用 WinSCP 进行初始文件传输,因为它提供了直观的图形界面和可靠的传输性能。传输前请确保:

# 在目标服务器上创建专用目录 sudo mkdir -p /opt/mysql_offline sudo chown -R $USER:$USER /opt/mysql_offline

2. 系统环境检查与依赖解析

2.1 深度系统兼容性检查

在开始安装前,必须全面检查系统环境。运行以下命令获取系统详细信息:

# 检查系统版本 lsb_release -a # 检查内核版本 uname -r # 检查已安装的依赖项 dpkg -l | grep -E 'libaio|libmecab|libnuma'

这些信息将帮助您确认是否需要额外的依赖包。我曾经在一个项目中忽略了内核版本检查,结果因为glibc版本不兼容导致安装失败,浪费了数小时排查时间。

2.2 依赖关系树分析

MySQL 8.0.26 的离线安装最大的挑战在于复杂的依赖关系。通过分析,我们可以得到以下依赖树:

mysql-server ├── mysql-community-server │ ├── mysql-community-server-core │ │ ├── libaio1 │ │ ├── libmecab2 │ │ └── libstdc++6 │ └── mysql-common ├── mysql-client │ ├── mysql-community-client │ │ └── mysql-community-client-core │ └── libmysqlclient21 └── libmysqlclient-dev

理解这个关系树至关重要,它决定了我们安装软件包的正确顺序。错误的安装顺序会导致依赖错误,甚至需要从头开始。

3. 分阶段安装流程

3.1 解压与准备安装包

将主安装包解压到指定目录:

tar -xvf mysql-server_8.0.26-1ubuntu20.04_amd64.deb-bundle.tar -C /opt/mysql_offline

解压后,您会看到多个.deb文件。以下是关键文件及其作用:

  • mysql-community-client-core_8.0.26-1ubuntu20.04_amd64.deb:客户端核心组件
  • mysql-community-server_8.0.26-1ubuntu20.04_amd64.deb:服务器主程序
  • mysql-community-server-core_8.0.26-1ubuntu20.04_amd64.deb:服务器核心组件

3.2 精确安装顺序与命令

基于依赖关系分析,以下是经过优化的安装顺序:

  1. 安装基础依赖:

    sudo dpkg -i libaio1_0.3.112-5_amd64.deb sudo dpkg -i libmecab2_0.996-10build1_amd64.deb
  2. 安装MySQL核心组件:

    sudo dpkg -i mysql-common_8.0.26-1ubuntu20.04_amd64.deb sudo dpkg -i mysql-community-client-plugins_8.0.26-1ubuntu20.04_amd64.deb sudo dpkg -i mysql-community-client-core_8.0.26-1ubuntu20.04_amd64.deb sudo dpkg -i mysql-community-client_8.0.26-1ubuntu20.04_amd64.deb
  3. 安装库文件:

    sudo dpkg -i libmysqlclient21_8.0.26-1ubuntu20.04_amd64.deb sudo dpkg -i libmysqlclient-dev_8.0.26-1ubuntu20.04_amd64.deb
  4. 安装服务器组件:

    sudo dpkg -i mysql-community-server-core_8.0.26-1ubuntu20.04_amd64.deb sudo dpkg -i mysql-community-server_8.0.26-1ubuntu20.04_amd64.deb

注意:在安装mysql-community-server时,系统会提示设置root密码。建议选择强密码并记录下来,因为在离线环境中重置密码会更加困难。

4. 安装后配置与优化

4.1 基础服务管理

安装完成后,启动MySQL服务并设置为开机自启:

sudo systemctl start mysql sudo systemctl enable mysql

验证服务状态:

systemctl status mysql

预期输出应显示"active (running)"。如果遇到问题,检查日志文件:

sudo tail -n 50 /var/log/mysql/error.log

4.2 安全加固配置

在内网环境中,安全同样重要。运行MySQL安全脚本:

sudo mysql_secure_installation

即使在内网,也建议:

  • 移除匿名用户
  • 禁止root远程登录
  • 移除测试数据库
  • 重新加载权限表

4.3 性能基础调优

编辑MySQL配置文件进行基础优化:

sudo nano /etc/mysql/mysql.conf.d/mysqld.cnf

添加或修改以下参数:

[mysqld] innodb_buffer_pool_size = 1G # 根据内存调整,通常为物理内存的50-70% innodb_log_file_size = 256M max_connections = 200 query_cache_size = 0 # MySQL 8.0已移除查询缓存

保存后重启服务使配置生效:

sudo systemctl restart mysql

5. 远程访问与权限管理

5.1 安全地启用远程访问

如果需要从其他服务器访问MySQL,需要谨慎配置:

  1. 创建专用管理用户:

    CREATE USER 'admin'@'192.168.1.%' IDENTIFIED BY 'StrongPassword!123'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'192.168.1.%' WITH GRANT OPTION; FLUSH PRIVILEGES;
  2. 修改绑定地址:

    sudo sed -i 's/bind-address.*/bind-address = 0.0.0.0/' /etc/mysql/mysql.conf.d/mysqld.cnf sudo systemctl restart mysql

重要:在内网环境中也要遵循最小权限原则,避免使用root账户进行远程连接。

5.2 防火墙配置

如果系统启用了UFW防火墙,需要开放MySQL端口:

sudo ufw allow from 192.168.1.0/24 to any port 3306 sudo ufw enable

验证规则是否生效:

sudo ufw status numbered

6. 备份与维护策略

6.1 离线环境下的备份方案

在没有外网连接的环境中,备份尤为重要。设置自动化本地备份:

# 创建备份目录 sudo mkdir /var/mysql_backups sudo chown mysql:mysql /var/mysql_backups # 每日全量备份脚本 echo '#!/bin/bash BACKUP_DIR="/var/mysql_backups" DATE=$(date +%Y%m%d) mysqldump -u root -p"YourRootPassword" --all-databases > "$BACKUP_DIR/full_backup_$DATE.sql" find $BACKUP_DIR -type f -name "*.sql" -mtime +7 -delete' | sudo tee /usr/local/bin/mysql_backup.sh sudo chmod +x /usr/local/bin/mysql_backup.sh

添加到cron定时任务:

(sudo crontab -l 2>/dev/null; echo "0 2 * * * /usr/local/bin/mysql_backup.sh") | sudo crontab -

6.2 创建可移植的离线安装包

为方便后续部署,可以将所有依赖打包:

# 创建打包目录 mkdir -p ~/mysql_offline_bundle cp /opt/mysql_offline/* ~/mysql_offline_bundle/ # 添加安装脚本 echo '#!/bin/bash echo "Installing dependencies..." sudo dpkg -i libaio1_0.3.112-5_amd64.deb sudo dpkg -i libmecab2_0.996-10build1_amd64.deb echo "Installing MySQL components..." sudo dpkg -i mysql-common_8.0.26-1ubuntu20.04_amd64.deb sudo dpkg -i mysql-community-client-plugins_8.0.26-1ubuntu20.04_amd64.deb # 添加剩余安装命令... echo "Installation complete!"' > ~/mysql_offline_bundle/install_mysql.sh chmod +x ~/mysql_offline_bundle/install_mysql.sh # 打包 tar -czvf mysql_8.0.26_offline_install.tar.gz ~/mysql_offline_bundle

这个完整的离线包可以复制到其他内网机器使用,大大简化后续部署工作。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询