《XFTP 离线安装 MySQL 8.0.45 详细流程 错误解决方法》 工具链Xshell Xftp VMware CentOS 8 MySQL 8.0.45 RPM 包一、前置准备环境搭建步骤操作说明1安装 VMware 虚拟机提供底层虚拟化环境2安装 CentOS 8 系统作为目标运行环境3安装 Xshell 8 Xftp 8远程连接与文件传输4确保物理机与虚拟机网络互通否则无法连通 SSHVMwareCentOS8镜像Xshell 8 xftp 8DataGrip二、网络配置关键保证能连目标让 CentOS 8 虚拟机可被 Xshell 连接2.1 虚拟机网络设置VMware打开虚拟机设置 网络适配器选择NAT 模式推荐或 自定义如VMnet8点击NAT 设置✅ 保证虚拟机 IP 与网关在同一子网2.2 配置 CentOS 8 静态 IP前提 当前用户是root管理员 并且 虚拟机器 是有线连接状态# 查看网卡名如 ens160ipaddress得到注此时一般与上述虚拟网络编辑器中的配置ip段不同需要进行手动配置。# 图形化语句编辑网络配置按图片内容进行编辑 注意要修改自己的 网关 和 子网掩码输入下面命令找到并打开配置文件进行ip设置如下图cd/etc/sysconfig/network-scripts/lsviifcig-ens160#我的是160 这个看你们的实际情况打开文件 按 字母 i 修改文件内容和 如果提示 你修改的是只读文件 说明权限不够 要用 root 用户重新登陆 手动将文件中ONBOOT和BOOTPROTO修改为如下内容 修改完 Esc退出编辑模式 输入 :wq 保存并且返回ONBOOTyesBOOTPROTOstatic保存退出按Esc→ 输入:wq回车# 重启网络服务 配置好网络之后 一定要重启sudosystemctl restart NetworkManager# Centos8sudosystemctl restart Network#Centos72.3 配置物理机网络Windows打开网络共享中心 更改适配器选项找到VMware Network Adapter VMnet8右键 → 属性 → IPv4 → 设置根据上述虚拟网络编辑器中的设置进行下图配置注意ip地址不要设置相同只要保证在同一个ip段即可默认网关与NAT设置中网关ip相同DNS服务器按照上述DNS1和DNS2设置。✅ 完成后物理机与虚拟机互通2.4 安装 SSH 服务确保 Xshell 能连接# 检查是否已安装 SSH 服务rpm-qa|grepopenssh-server# 若未安装执行sudoyuminstall-yopenssh-server# 启动并设为开机自启sudosystemctl start sshdsudosystemctlenablesshd2.5 使用 Xshell 连接虚拟机第一步打开安装好的Xshell新建会话设置主机即虚拟机中设置的IPADDR和端口号默认是22点击连接。对话框中输入账用户名和密码点击确定等待连接成功。如果连接成功出现以下页面就可以使用Xshell操作虚拟机了。连接成功成功进入 CentOS 终端Xshell → CentOS 连接成功三、准备阶段本地操作1. 下载 MySQL 8.0.45 RPM 包在有网机器上前往官网https://dev.mysql.com/downloads/repo/yum/下载mysql-8.0.45-1.el8.x86_64.rpm-bundle.tar✅ 保存到本地电脑2. 使用 Xftp 上传文件到虚拟机✅ 文件已上传至/root/mysql-8.0.45-1.el8.x86_64.rpm-bundle.tar四、安装流程在 CentOS 终端执行⚠️ 关键说明离线环境下无法解决依赖必须使用--force --nodeps绕过安装顺序common → libs → client → devel → server → icu# 进入上传目录cd/usr/local/mysql# 解压包生成所有 .rpm 文件tar-xfmysql-8.0.45-1.el8.x86_64.rpm-bundle.tar# 依次安装所有命令加 --force --nodeps# 可以先试一下 不加 --force --nodeps 如果报错 就加上吧 失败的情况就是下边的第一个图 依赖检测失败sudorpm-ivhmysql-community-common-8.0.45-1.el8.x86_64.rpm--force--nodepssudorpm-ivhmysql-community-libs-8.0.45-1.el8.x86_64.rpm--force--nodepssudorpm-ivhmysql-community-client-8.0.45-1.el8.x86_64.rpm--force--nodepssudorpm-ivhmysql-community-devel-8.0.45-1.el8.x86_64.rpm--force--nodepssudorpm-ivhmysql-community-server-8.0.45-1.el8.x86_64.rpm--force--nodepssudorpm-ivhmysql-community-icu-data-files-8.0.45-1.el8.x86_64--force--nodeps# 全部安装之后 可以检查一下安装好了没rpm-qa|grepmysql失败例子成功例子全部安装成功每个命令执行后确认无报错五、初始化与启动核心步骤sudomkdir-p/var/lib/mysql#创建数据目录 可以无脑粘贴sudochown-Rmysql:mysql /var/lib/mysql# 设置权限关键sudomysqld--initialize--usermysql--basedir/usr--datadir/var/lib/mysql--console## 3. 初始化使用正确 basedir你的是 /usr/local/mysql#注意 如果你的mysql 路径和我的一样 若你曾手动解压 RPM 包到 /usr/local/mysql#那 --basedir 必须改为 /usr/local/mysqlsudomysqld--initialize--usermysql--basedir/usr/local/mysql--datadir/var/lib/mysq--consolesudosystemctlenablemysqld# 启动服务并sudosystemctl start mysqld#设置开机自启sudogreptemporary password/var/log/mysqld.log# 查看临时密码记住它 方便登录使用 登陆之后再改密码代码解析步骤命令功能解析风险提示实际输出示例1sudo mkdir -p /var/lib/mysql创建数据目录✔️ 确保 MySQL 服务有地方存放所有数据库文件✔️mkdir -p表示父目录不存在也自动创建❌ 若不创建启动时报错Could not open log fileError: Cant create/write to file…/mysql.ibd’bash $ sudo mkdir -p /var/lib/mysql $ ls /var/lib/mysql # 空目录等待初始化2sudo chown -R mysql:mysql /var/lib/mysql递归设置目录所有者为 mysql 用户✔️ MySQL 服务运行时必须以mysql用户身份操作数据文件✔️ 若权限错误服务无法读写启动失败❌ 常见问题Access denied for user mysql❌ 报错mysqld: Cant create/write to file ... Permission deniedbash $ sudo chown -R mysql:mysql /var/lib/mysql $ ls -ld /var/lib/mysql drwxr-xr-x. 2 mysql mysql 6 Apr 2 23:00 /var/lib/mysql3sudo mysqld --initialize --usermysql --basedir/usr --datadir/var/lib/mysql --console初始化数据库实例✅--initialize生成系统数据库、用户表、临时密码✅--usermysql以 mysql 用户身份运行初始化✅--basedir/usrMySQL 安装主目录RPM 安装路径✅--datadir/var/lib/mysql存放数据文件✅--console输出日志到终端便于查看临时密码⚠️ 比较危险操作会覆盖原有数据❗ 若datadir已有数据会导致数据丢失✅ 警告WARNING: --initialize is deprecatedMySQL 8.0.21 推荐--initialize-insecure但仅限测试text 2026-04-02T23:00:45.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for rootlocalhost: zD2pJj%5rM7 临时密码zD2pJj%5rM74sudo systemctl enable mysqld设置 MySQL 在开机时自动启动✅ 开机自启避免服务器重启后数据库未启动✅ 实际是创建软连接/etc/systemd/system/multi-user.target.wants/mysqld.service❌ 若未开启重启后需手动systemctl start mysqld✅ 可用systemctl is-enabled mysqld查看是否启用bash $ sudo systemctl enable mysqld Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.5sudo systemctl start mysqld启动 MySQL 服务✅ 服务启动成功后3306 端口会监听✅ 可用 netstat -tulnpgrep 3306 验证❌ 启动失败可能原因1. 数据目录权限不对2. 配置文件错位3. 端口被占用4. 临时密码文件生成失败6sudo grep temporary password /var/log/mysqld.log从日志中提取初始密码⚠️ 临时密码只在--initialize时生成一次✅ 一旦登录修改密码日志中不再出现❌ 若日志被轮转或删除可能找不到✅ 建议立即执行保存密码bash $ sudo grep temporary password /var/log/mysqld.log 2026-04-02T23:00:45.123456Z 6 [Note] [MY-010454] [Server] A temporary password is generated for rootlocalhost: zD2pJj%5rM7临时密码示例ls8iAxcsiAg✅ 成功输出 → 表示初始化完成六、登录与修改密码mysql-uroot-p输入临时密码ls8iAxcsiAg进入后执行ALTERUSERrootlocalhostIDENTIFIEDBYMyStrongPass2025!;FLUSHPRIVILEGES;✅ 密码修改成功七、配置远程访问可选用于 Windows1. 修改配置文件sudovi/etc/my.cnf添加或修改bind-address 0.0.0.0❗ 千万不要写成127.0.0.1否则无法远程连接2. 重启 MySQLsudosystemctl restart mysqld3. 开放防火墙端口3306# 1. 永久添加sudofirewall-cmd--permanent--add-port3306/tcp# 2. 重新加载配置sudofirewall-cmd--reload# 3. 验证是否开放sudofirewall-cmd --query-port3306/tcp# 输出: yes → 成功# 4. 查看当前所有开放端口sudofirewall-cmd --list-all✅ 输出yes→ 端口开放成功| 步骤 | 命令 | 功能详解 | 关键点 | 实际输出示例 ||------|------|----------|--------|--------------|| 1 |sudo firewall-cmd --permanent --add-port3306/tcp|永久开放 TCP 3306 端口✔️ 允许外部流量通过 3306 端口访问 MySQL✔️--permanent写入配置文件重启后仍有效✔️--add-port3306/tcp开放 TCP 协议的 3306 端口 | ❗ 注意1.--permanent不影响当前生效状态只修改配置2. 必须执行--reload才能立即生效 |bash Success|| 2 |sudo firewall-cmd --reload|重新加载防火墙配置✔️ 将所有--permanent设置写入运行时规则✔️ 重启后仍然生效但仅靠--permanent不会立即开放端口⚠️ 所有--permanent修改后必须reload才能生效 | ⚠️ 常见误区❌ 以为--permanent立即生效 → 实际只改了文件✅ 正确顺序--permanent→--reload|bash success|| 3 |sudo firewall-cmd --query-port3306/tcp|查询是否已开放 3306 端口✔️ 返回yes表示已开放✔️ 返回no表示未开放可能是没reload或命令错 | ✅ 推荐使用确认配置成功最可靠方式 |bash yes|八、验证安装成功SHOWDATABASES;输出-------------------- | Database | -------------------- | information_schema | | mysql | | performance_schema | | sys | -------------------- 4 rows in set (0.00 sec)✅ 数据库正常安装成功九、常见问题与解决方法问题原因解决方法依赖检测失败如client-plugins缺失离线环境下无法自动安装依赖使用--force --nodeps强制安装mysql: unknown option --initialize误用mysql命令改为mysqld --initializeAccess denied for user rootlocalhost密码错误 或 未初始化使用日志中临时密码登录无法远程连接bind-address限制为127.0.0.1或防火墙未开改为0.0.0.0 开放3306端口chown权限错误数据目录不属于 mysql 用户执行chown -R mysql:mysql /var/lib/mysqlmysqld.log不存在未启动服务启动systemctl start mysqld我们将DataGrip 与 虚拟机数据库连接的步骤 与问题1、加载数据源2、问题一、虚拟机防火墙阻止了3306端口访问填写主机地址 端口号保持3306 填写用户名与密码 点击测试链接 如果 报错 就是虚拟机防火墙阻止了3306端口访问 就按照上边的办法解决就行解决方法参考上边 开放防火强端口3、问题二、本地 MySQL 拒绝远程连接解决方法是 MySQL 本身只允许rootlocalhost登录未授权root%从远程连接。 关键点MySQL 默认只允许localhost登录root%任何 IP是禁止的必须手动创建用户 授权 刷新权限步骤 1、登录 MySQLmysql-uroot-p步骤 2、授权远程访问关键命令-- 1. 创建 root 用户允许从任意 IP 登录CREATEUSERroot%IDENTIFIEDBYMyStrongPass2025!;-- 2. 授予所有权限库、表、操作GRANTALLPRIVILEGESON*.*TOroot%WITHGRANTOPTION;-- 3. 刷新权限生效新配置FLUSHPRIVILEGES;-- 4. 退出 MySQLEXIT;执行成功后出现Bye提示表示已退出。步骤 3、重启 MySQL 服务sudosystemctl restart mysqld重启后MySQL 会重新加载权限规则步骤 4、 验证是否修复成功步骤 5、查看 MySQL 用户权限mysql-u root-pSELECTUser,HostFROMmysql.userWHEREUserroot;输出应包含----------------- | User | Host | ----------------- | root | localhost | | root | % | -----------------root%存在 → 远程授权成功4、风险提示与安全建议非常重要项目建议使用root%授权风险高一旦密码泄露远程可完全控制数据库生产环境应禁用root%建议新建只读/读写用户如app_user192.168.10.%限制 IP 白名单可改为CREATE USER root192.168.10.100使用mysql_native_password认证若使用 SSL/认证失败可添加IDENTIFIED WITH mysql_native_password BY ...替代方案更安全推荐创建专用用户生产环境用-- 1. 创建特定用户CREATEUSERapp_user192.168.10.%IDENTIFIEDBYMyAppPass2025!;-- 2. 授权数据库访问GRANTSELECT,INSERT,UPDATE,DELETEONmyapp_db.*TOapp_user192.168.10.%;-- 3. 刷新权限FLUSHPRIVILEGES;✔️ 仅限指定 IP 访问✔️ 权限最小化✔️ 更安全需要安装包 VMware CentOS 8 MySQL 8.0 RPM 安装包 Xshell/Xftp DataGrip 激活的 评论取 一键三连