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

手把手教你:在麒麟系统上通过Samba挂载Windows共享来安装MySQL离线包

麒麟系统实战:通过Samba挂载Windows共享部署MySQL离线环境

在企业混合IT环境中,国产操作系统与Windows服务器的协同作业已成为常态。当麒麟Kylin系统需要从Windows文件服务器获取MySQL安装包时,Samba协议架起了跨平台文件共享的桥梁。本文将深入解析从挂载配置到数据库初始化的全流程,涵盖你可能遇到的所有技术细节。

1. 环境准备与冲突排查

在开始挂载操作前,麒麟系统需要完成基础环境检查。首先确认系统版本信息:

cat /etc/os-release

输出示例:

NAME="Kylin Linux Advanced Server" VERSION="V10 (Tercel)" ID="kylin"

关键依赖检查

  • 确保已安装cifs-utils工具包(Samba客户端组件)
  • 检查内核是否支持CIFS模块(lsmod | grep cifs

常见冲突场景是系统中预装的MariaDB与MySQL产生兼容性问题。彻底清理残留组件的操作如下:

# 查找并移除MariaDB相关包 rpm -qa | grep mariadb | xargs rpm -e --nodeps # 清理旧版MySQL rpm -qa | grep mysql | xargs rpm -e --nodeps

注意:--nodeps参数会强制卸载软件包,适用于明确需要清除依赖的场景。在生产环境中建议先备份重要数据。

2. Samba挂载的深度配置

2.1 挂载点创建与权限管理

创建具有适当权限的挂载目录是成功访问共享文件的前提:

sudo mkdir -p /mnt/win_share sudo chmod 1777 /mnt/win_share # 设置粘滞位防止用户误删

权限参数说明表:

权限值含义适用场景
755所有者RWX,其他用户RX常规程序目录
1777全开放+粘滞位共享临时目录
700仅所有者可访问敏感配置目录

2.2 高级挂载参数解析

完整的挂载命令包含多项关键参数:

sudo mount -t cifs //192.168.1.100/MySQL_Repo /mnt/win_share \ -o username=admin,password=P@ssw0rd,uid=1000,gid=1000,file_mode=0644,dir_mode=0755,vers=3.0

参数详解:

  • vers=3.0:指定SMB协议版本,兼容Win10+服务器
  • uid/gid:将文件所有权映射到本地用户
  • file_mode/dir_mode:控制新建文件的默认权限

故障排查指南

  1. 当出现Device or resource busy时:
    lsof +D /mnt/win_share # 查看占用进程 sudo umount -l /mnt/win_share # 强制卸载
  2. 遇到Permission denied错误时:
    • 检查Windows共享文件夹的NTFS权限
    • 在挂载命令中添加sec=ntlmssp参数

3. MySQL离线部署实战

3.1 安装包处理技巧

从共享目录复制安装包时,推荐使用rsync保证传输可靠性:

rsync -avz --progress /mnt/win_share/mysql-8.2.0-bundle.tar /opt/pkgs/

解压RPM Bundle的技巧:

mkdir -p /opt/mysql-install tar -xvf /opt/pkgs/mysql-8.2.0-bundle.tar -C /opt/mysql-install

3.2 依赖关系解决方案

麒麟系统可能缺少MySQL所需的库文件,可通过以下方式解决:

  1. 建立本地YUM仓库:

    sudo yum install createrepo createrepo /opt/mysql-install
  2. 创建repo配置文件:

    [mysql-local] name=MySQL Local Repository baseurl=file:///opt/mysql-install enabled=1 gpgcheck=0
  3. 使用YUM自动处理依赖:

    sudo yum --disablerepo=* --enablerepo=mysql-local install mysql-community-server

4. 数据库初始化与加固

4.1 安全启动流程

# 初始化数据目录 sudo mysqld --initialize --user=mysql --datadir=/var/lib/mysql # 获取临时密码 sudo grep 'temporary password' /var/log/mysqld.log | awk '{print $NF}'

密码策略调整方法:

-- 查看当前策略 SHOW VARIABLES LIKE 'validate_password%'; -- 临时降低策略要求(仅测试环境) SET GLOBAL validate_password.policy=LOW;

4.2 生产环境配置建议

  1. 关键my.cnf配置项:

    [mysqld] datadir=/var/lib/mysql socket=/var/lib/mysql/mysql.sock log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid default_authentication_plugin=mysql_native_password character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
  2. 防火墙规则配置:

    sudo firewall-cmd --permanent --add-service=mysql sudo firewall-cmd --reload
  3. 定期备份方案:

    # 每日全量备份 mysqldump -u root -p --all-databases | gzip > /backups/mysql_$(date +%F).sql.gz

5. 跨平台访问优化

实现Windows客户端无缝连接麒麟MySQL服务:

  1. 创建远程访问账户:

    CREATE USER 'win_user'@'192.168.1.%' IDENTIFIED BY 'ComplexPwd123!'; GRANT ALL PRIVILEGES ON *.* TO 'win_user'@'192.168.1.%';
  2. 在Windows端使用MySQL Workbench连接时:

    • 主机名填写麒麟服务器的IP
    • 端口保持默认3306
    • 身份验证方法选择"Standard"
  3. 性能调优参数(适用于混合网络环境):

    [mysqld] skip-name-resolve wait_timeout=28800 interactive_timeout=28800 max_allowed_packet=256M

在实际项目部署中,曾遇到Windows客户端连接超时的问题。最终发现是麒麟系统默认的TCP keepalive时间设置过短,通过修改/etc/sysctl.conf增加以下参数解决:

net.ipv4.tcp_keepalive_time = 600 net.ipv4.tcp_keepalive_intvl = 60 net.ipv4.tcp_keepalive_probes = 10
http://www.cnnetsun.cn/news/2202398.html

相关文章:

  • 在Nodejs后端服务中集成Taotoken实现多模型调用
  • 别再只用默认贴图了!手把手教你给Gazebo模型换上自己的Logo或照片(附.material文件详解)
  • 告别电压越限!手把手教你用Python复现IEEE论文里的配电网集群电压控制算法(附完整代码)
  • csp信奥赛C++高频考点专项训练之字符串 --【字符串基础】:输出亲朋字符串
  • 从挑战到突破:在RK3566平台上实现sherpa-onnx流式语音识别的高效部署
  • 在Windows上运行iOS应用:3步搞定ipasim终极安装指南
  • 终极指南:如何用WindowResizer轻松突破Windows窗口尺寸限制
  • 别再混淆Clause 22和45了!一文搞懂SMI/MDIO访问PHY寄存器的两种姿势
  • 互联网大厂 Java 求职者面试实录:从 Spring Boot 到微服务的技术之旅
  • LinkSwift网盘直链下载助手:八大平台免费下载加速终极方案
  • SpeakGPT:开源移动端AI助手,聚合GPT/Gemini等多模型,支持语音图像交互
  • 简单快速:B站缓存视频转换工具m4s-converter完全指南
  • 保姆级教程:用Python+OpenCV调参SGBM,让你的双目视觉项目效果立竿见影
  • Fan Control技术解析:Windows系统散热管理的架构设计与算法实现
  • 阿里云DMS MCP Server:企业级数据访问的AI协议适配器
  • 别再死磕LeetCode了!985学长亲述:校招进大厂,这4个‘光环’比刷题重要100倍
  • SQL Server 2019 Developer版在Windows 11上的保姆级安装与SSMS配置全流程(含端口1433避坑指南)
  • 基于MCP协议构建AI Agent与Google Sheets数据管道实战
  • Windows 11下用IDD驱动(IddCx)手搓一个虚拟显示器:从签名到扩展屏的完整踩坑记录
  • AI Agent安全入门:使用opena2a进行静态扫描与漏洞防护
  • 深度学习手语翻译系统的技术挑战与创新解决方案
  • Avidemux视频剪辑:为什么这款轻量级工具是普通用户的最佳选择?
  • GD32H759I-EVAL开发板TLI驱动LCD避坑指南:从GPIO配置到图层混合的实战心得
  • 别再死记硬背了!用“科研选题”方法论搞定你的下一个技术Side Project
  • 基于Claude Code构建个人操作系统:无代码自动化与AI协作实践
  • 使用 curl 命令直接测试 Taotoken 的 API 连通性与响应
  • Elsevier投稿踩坑记:手把手解决LaTeX模板的‘thumbnails图片找不到’报错
  • MiGPT终极配置指南:3步打造智能AI语音管家,让小爱音箱秒变AI助手
  • 避坑指南:为什么你的PyTorch1.12.1+cu116在Ubuntu22.04上报CUDA错?从pip失败到conda成功的踩坑实录
  • 网盘直链下载助手:彻底告别下载限速的免费解决方案