Linux 离线 tar 包手动安装 MySQL8.0 完整教程VM 虚拟机环境前言很多企业内网服务器无法联网不能使用 yum / apt 在线安装 MySQL此时官方压缩包离线部署是最优方案。本文基于 CentOS / RHEL 系列虚拟机完整记录从环境清理、MySQL 部署初始化、systemd 服务配置、各类报错排错全流程包含权限、SELinux、socket 连接失败等高频问题解决方案新手可直接跟着操作落地。一、前置准备VM 环境清理1.1 资源准备搭建 VMware 虚拟机导入 CentOS 镜像提前规划放行 3306 端口下载 MySQL 离线包mysql-8.0.46-linux-glibc2.28-x86_64.tar.xz上传至服务器。1.2 清理旧环境残留若宿主机/虚拟机曾经装过 VM、MySQL残留配置、注册表、旧文件会引发端口冲突、启动失败必须彻底清理Windows 宿主机卸载 VMware删除安装目录、用户目录隐藏.vmware文件夹清理注册表 VMware 相关项Linux 虚拟机清理旧 MySQLsudosystemctl stop mysqldsudorm-rf/usr/local/mysql /etc/my.cnf二、MySQL 解压与基础目录部署2.1 解压并迁移至标准目录# 解压 xz 压缩包tar-xJfmysql-8.0.46-linux-glibc2.28-x86_64.tar.xz# 移动到系统标准安装目录 /usr/local/mysqlsudomvmysql-8.0.46-linux-glibc2.28-x86_64 /usr/local/mysql2.2 创建全局软链接方便任意终端直接使用 mysql 命令后续升级只需替换安装目录无需修改环境变量sudoln-s/usr/local/mysql/bin/mysql /usr/local/bin/mysqlsudoln-s/usr/local/mysql/bin/mysqld /usr/local/bin/mysqld2.3 创建专用运行用户安全规范禁止 root 运行数据库创建无登录权限的独立 mysql 用户# 创建用户组sudogroupaddmysql# 创建系统用户归属 mysql 组禁止登录服务器sudouseradd-r-gmysql-s/bin/false mysql2.4 创建数据目录并授权# 创建数据存储目录sudomkdir-p/usr/local/mysql/data# 赋予 mysql 用户完整目录权限sudochown-Rmysql:mysql /usr/local/mysql三、数据库初始化重点保存临时密码执行初始化命令终端会输出 root 临时密码务必复制保存丢失需重置密码sudo/usr/local/mysql/bin/mysqld--initialize--usermysql--basedir/usr/local/mysql--datadir/usr/local/mysql/data输出示例[Note] A temporary password is generated for rootlocalhost: Abc9#xyz!def四、编写 MySQL 配置文件 /etc/my.cnfsudotee/etc/my.cnfEOF [mysqld] basedir/usr/local/mysql datadir/usr/local/mysql/data socket/tmp/mysql.sock port3306 [client] socket/tmp/mysql.sock EOF五、配置 systemd 服务实现开机自启5.1 创建 mysql.service 服务文件sudotee/etc/systemd/system/mysql.serviceEOF [Unit] DescriptionMySQL Server Afternetwork.target [Service] Typeforking Usermysql Groupmysql ExecStart/usr/local/mysql/bin/mysqld_safe --datadir/usr/local/mysql/data ExecStop/usr/local/mysql/bin/mysqladmin shutdown Restarton-failure [Install] WantedBymulti-user.target EOF5.2 重载服务并启动 MySQL# 重载 systemd 识别新服务sudosystemctl daemon-reload# 设置开机自启sudosystemctlenablemysql# 启动服务sudosystemctl start mysql# 查看运行状态sudosystemctl status mysql六、登录数据库修改 root 密码6.1 使用临时密码登录mysql-uroot-p粘贴初始化生成的临时密码进入数据库。6.2 修改本地 root 密码ALTERUSERrootlocalhostIDENTIFIEDBY你的自定义强密码;6.3 忘记临时密码重置方案# 停止 MySQL 服务sudosystemctl stop mysql# 跳过权限表后台启动sudo/usr/local/mysql/bin/mysqld_safe --skip-grant-tables# 免密登录mysql-uroot执行重置 SQLALTERUSERrootlocalhostIDENTIFIEDBY新密码;FLUSHPRIVILEGES;EXIT;关闭临时进程正常启动服务sudopkillmysqldsudosystemctl start mysql七、安装完成验证命令# 查看 MySQL 版本mysql--version# 查看服务运行状态sudosystemctl status mysql# 登录查看默认库mysql-uroot-p-eSHOW DATABASES;八、常见报错完整排错指南8.1 服务启动失败查看日志定位根源MySQL 自身错误日志最有效sudotail-n50/usr/local/mysql/data/$(hostname).errsystemd 服务运行日志sudojournalctl-xeumysql.service --no-pager8.2 报错1目录权限不足最高频问题# 一键修复目录归属与权限sudochown-Rmysql:mysql /usr/local/mysqlsudochmod755/usr/local/mysqlsudochmod750/usr/local/mysql/data8.3 报错2SELinux 拦截CentOS/RHEL 专属执行getenforce输出Enforcing即代表 SELinux 开启拦截。方案1给目录添加 SELinux 标签推荐不关闭安全机制# 数据目录标签sudosemanage fcontext-a-tmysqld_db_t/usr/local/mysql/data(/.*)?2/dev/null||truesudorestorecon-Rv/usr/local/mysql/data# 二进制程序标签sudosemanage fcontext-a-tmysqld_exec_t/usr/local/mysql/bin/mysqld2/dev/null||truesudorestorecon-v/usr/local/mysql/bin/mysqld# 整体安装目录标签sudosemanage fcontext-a-tusr_t/usr/local/mysql(/.*)?2/dev/null||truesudorestorecon-Rv/usr/local/mysql# 重启服务sudosystemctl restart mysql优化 service 启动方式替换 mysql.service 文件适配 SELinuxsudotee/etc/systemd/system/mysql.serviceEOF [Unit] DescriptionMySQL Server Afternetwork.target [Service] Typesimple Usermysql Groupmysql ExecStart/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf Restarton-failure [Install] WantedBymulti-user.target EOFsudosystemctl daemon-reloadsudosystemctl start mysql8.4 报错32002 socket 路径不匹配报错信息Cant connect to local MySQL server through socket /run/mysqld/mysqld.sock原因服务端 socket 为/tmp/mysql.sock客户端默认读取/run/mysqld/mysqld.sock路径不一致。方法1统一 socket 路径推荐# 重写配置文件sudotee/etc/my.cnfEOF [mysqld] basedir/usr/local/mysql datadir/usr/local/mysql/data socket/run/mysqld/mysqld.sock port3306 [client] socket/run/mysqld/mysqld.sock EOF# 创建目录并授权sudomkdir-p/run/mysqldsudochownmysql:mysql /run/mysqld# 重启 MySQLsudosystemctl restart mysql方法2创建软链接映射 socketsudomkdir-p/run/mysqldsudoln-s/tmp/mysql.sock /run/mysqld/mysqld.sock方法3登录时手动指定 socketmysql-uroot-p--socket/tmp/mysql.socksocket 问题校验命令# 查看服务状态sudosystemctl status mysql# 全局查找 socket 文件sudofind/-namemysql.sock-o-namemysqld.sock2/dev/null# 查看目录权限ls-la/run/mysqld/# 核对配置文件cat/etc/my.cnf九、部署完成后必做优化操作设置高强度 root 登录密码避免弱密码确认 MySQL 开机自启sudo systemctl enable mysql防火墙放行 3306 端口如需外部远程连接定期备份/usr/local/mysql/data数据目录删除匿名用户限制 root 仅本地访问提升数据库安全。结语离线压缩包部署 MySQL8.0 自由度更高适合无外网内网服务器。整套流程踩坑点集中在目录权限、SELinux 拦截、socket 路径不匹配遇到启动失败优先查看.err错误日志基本可以快速定位问题。本文适配 CentOS7/8/9 全系列VM 虚拟机环境可直接复刻操作。
Linux 离线 tar 包手动安装 MySQL8.0 完整教程(VM 虚拟机环境)
发布时间:2026/7/10 18:56:59
Linux 离线 tar 包手动安装 MySQL8.0 完整教程VM 虚拟机环境前言很多企业内网服务器无法联网不能使用 yum / apt 在线安装 MySQL此时官方压缩包离线部署是最优方案。本文基于 CentOS / RHEL 系列虚拟机完整记录从环境清理、MySQL 部署初始化、systemd 服务配置、各类报错排错全流程包含权限、SELinux、socket 连接失败等高频问题解决方案新手可直接跟着操作落地。一、前置准备VM 环境清理1.1 资源准备搭建 VMware 虚拟机导入 CentOS 镜像提前规划放行 3306 端口下载 MySQL 离线包mysql-8.0.46-linux-glibc2.28-x86_64.tar.xz上传至服务器。1.2 清理旧环境残留若宿主机/虚拟机曾经装过 VM、MySQL残留配置、注册表、旧文件会引发端口冲突、启动失败必须彻底清理Windows 宿主机卸载 VMware删除安装目录、用户目录隐藏.vmware文件夹清理注册表 VMware 相关项Linux 虚拟机清理旧 MySQLsudosystemctl stop mysqldsudorm-rf/usr/local/mysql /etc/my.cnf二、MySQL 解压与基础目录部署2.1 解压并迁移至标准目录# 解压 xz 压缩包tar-xJfmysql-8.0.46-linux-glibc2.28-x86_64.tar.xz# 移动到系统标准安装目录 /usr/local/mysqlsudomvmysql-8.0.46-linux-glibc2.28-x86_64 /usr/local/mysql2.2 创建全局软链接方便任意终端直接使用 mysql 命令后续升级只需替换安装目录无需修改环境变量sudoln-s/usr/local/mysql/bin/mysql /usr/local/bin/mysqlsudoln-s/usr/local/mysql/bin/mysqld /usr/local/bin/mysqld2.3 创建专用运行用户安全规范禁止 root 运行数据库创建无登录权限的独立 mysql 用户# 创建用户组sudogroupaddmysql# 创建系统用户归属 mysql 组禁止登录服务器sudouseradd-r-gmysql-s/bin/false mysql2.4 创建数据目录并授权# 创建数据存储目录sudomkdir-p/usr/local/mysql/data# 赋予 mysql 用户完整目录权限sudochown-Rmysql:mysql /usr/local/mysql三、数据库初始化重点保存临时密码执行初始化命令终端会输出 root 临时密码务必复制保存丢失需重置密码sudo/usr/local/mysql/bin/mysqld--initialize--usermysql--basedir/usr/local/mysql--datadir/usr/local/mysql/data输出示例[Note] A temporary password is generated for rootlocalhost: Abc9#xyz!def四、编写 MySQL 配置文件 /etc/my.cnfsudotee/etc/my.cnfEOF [mysqld] basedir/usr/local/mysql datadir/usr/local/mysql/data socket/tmp/mysql.sock port3306 [client] socket/tmp/mysql.sock EOF五、配置 systemd 服务实现开机自启5.1 创建 mysql.service 服务文件sudotee/etc/systemd/system/mysql.serviceEOF [Unit] DescriptionMySQL Server Afternetwork.target [Service] Typeforking Usermysql Groupmysql ExecStart/usr/local/mysql/bin/mysqld_safe --datadir/usr/local/mysql/data ExecStop/usr/local/mysql/bin/mysqladmin shutdown Restarton-failure [Install] WantedBymulti-user.target EOF5.2 重载服务并启动 MySQL# 重载 systemd 识别新服务sudosystemctl daemon-reload# 设置开机自启sudosystemctlenablemysql# 启动服务sudosystemctl start mysql# 查看运行状态sudosystemctl status mysql六、登录数据库修改 root 密码6.1 使用临时密码登录mysql-uroot-p粘贴初始化生成的临时密码进入数据库。6.2 修改本地 root 密码ALTERUSERrootlocalhostIDENTIFIEDBY你的自定义强密码;6.3 忘记临时密码重置方案# 停止 MySQL 服务sudosystemctl stop mysql# 跳过权限表后台启动sudo/usr/local/mysql/bin/mysqld_safe --skip-grant-tables# 免密登录mysql-uroot执行重置 SQLALTERUSERrootlocalhostIDENTIFIEDBY新密码;FLUSHPRIVILEGES;EXIT;关闭临时进程正常启动服务sudopkillmysqldsudosystemctl start mysql七、安装完成验证命令# 查看 MySQL 版本mysql--version# 查看服务运行状态sudosystemctl status mysql# 登录查看默认库mysql-uroot-p-eSHOW DATABASES;八、常见报错完整排错指南8.1 服务启动失败查看日志定位根源MySQL 自身错误日志最有效sudotail-n50/usr/local/mysql/data/$(hostname).errsystemd 服务运行日志sudojournalctl-xeumysql.service --no-pager8.2 报错1目录权限不足最高频问题# 一键修复目录归属与权限sudochown-Rmysql:mysql /usr/local/mysqlsudochmod755/usr/local/mysqlsudochmod750/usr/local/mysql/data8.3 报错2SELinux 拦截CentOS/RHEL 专属执行getenforce输出Enforcing即代表 SELinux 开启拦截。方案1给目录添加 SELinux 标签推荐不关闭安全机制# 数据目录标签sudosemanage fcontext-a-tmysqld_db_t/usr/local/mysql/data(/.*)?2/dev/null||truesudorestorecon-Rv/usr/local/mysql/data# 二进制程序标签sudosemanage fcontext-a-tmysqld_exec_t/usr/local/mysql/bin/mysqld2/dev/null||truesudorestorecon-v/usr/local/mysql/bin/mysqld# 整体安装目录标签sudosemanage fcontext-a-tusr_t/usr/local/mysql(/.*)?2/dev/null||truesudorestorecon-Rv/usr/local/mysql# 重启服务sudosystemctl restart mysql优化 service 启动方式替换 mysql.service 文件适配 SELinuxsudotee/etc/systemd/system/mysql.serviceEOF [Unit] DescriptionMySQL Server Afternetwork.target [Service] Typesimple Usermysql Groupmysql ExecStart/usr/local/mysql/bin/mysqld --defaults-file/etc/my.cnf Restarton-failure [Install] WantedBymulti-user.target EOFsudosystemctl daemon-reloadsudosystemctl start mysql8.4 报错32002 socket 路径不匹配报错信息Cant connect to local MySQL server through socket /run/mysqld/mysqld.sock原因服务端 socket 为/tmp/mysql.sock客户端默认读取/run/mysqld/mysqld.sock路径不一致。方法1统一 socket 路径推荐# 重写配置文件sudotee/etc/my.cnfEOF [mysqld] basedir/usr/local/mysql datadir/usr/local/mysql/data socket/run/mysqld/mysqld.sock port3306 [client] socket/run/mysqld/mysqld.sock EOF# 创建目录并授权sudomkdir-p/run/mysqldsudochownmysql:mysql /run/mysqld# 重启 MySQLsudosystemctl restart mysql方法2创建软链接映射 socketsudomkdir-p/run/mysqldsudoln-s/tmp/mysql.sock /run/mysqld/mysqld.sock方法3登录时手动指定 socketmysql-uroot-p--socket/tmp/mysql.socksocket 问题校验命令# 查看服务状态sudosystemctl status mysql# 全局查找 socket 文件sudofind/-namemysql.sock-o-namemysqld.sock2/dev/null# 查看目录权限ls-la/run/mysqld/# 核对配置文件cat/etc/my.cnf九、部署完成后必做优化操作设置高强度 root 登录密码避免弱密码确认 MySQL 开机自启sudo systemctl enable mysql防火墙放行 3306 端口如需外部远程连接定期备份/usr/local/mysql/data数据目录删除匿名用户限制 root 仅本地访问提升数据库安全。结语离线压缩包部署 MySQL8.0 自由度更高适合无外网内网服务器。整套流程踩坑点集中在目录权限、SELinux 拦截、socket 路径不匹配遇到启动失败优先查看.err错误日志基本可以快速定位问题。本文适配 CentOS7/8/9 全系列VM 虚拟机环境可直接复刻操作。