You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hyper-V部署Minikube集群时如何将SQL文件挂载到MySQL容器

解决方案

以下提供两种可直接落地的实现方式,按需选择即可:

方案1:修复现有PV/PVC挂载配置

你当前配置无法读取文件主要有两个原因:

  • 手动创建的PV未指定存储类名,PVC也没有对应绑定规则,大概率被Minikube默认的动态存储类分配了新PV,没有用到你指向虚拟机/data目录的手动PV
  • hostPath类型PV默认权限仅root可读写,MySQL容器运行用户为mysql,权限不足会导致读不到文件

修复步骤:

  1. 先删除已创建的PVC和PV
kubectl delete pvc sqlvolume
kubectl delete pv sqlvolume
  1. 修改PV配置,新增存储类名和权限配置,保存为pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
  name: sqlvolume
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  capacity:
    storage: 1Gi
  hostPath:
    path: /data
  mountOptions:
    - dir_mode=0755
    - file_mode=0755
  1. 修改PVC配置,指定对应存储类名,保存为pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  labels:
    io.kompose.service: sqlvolume
  name: sqlvolume
spec:
  storageClassName: manual
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 100Mi
  1. 重新创建PV和PVC,确认绑定状态
kubectl apply -f pv.yaml
kubectl apply -f pvc.yaml
# 执行以下命令,STATUS显示为Bound则表示绑定成功
kubectl get pvc sqlvolume
  1. 重启MySQL Deployment生效
kubectl rollout restart deployment mysql

挂载完成后进入容器,在/data目录即可看到Minikube虚拟机内的所有文件。

方案2:无需修改配置,直接拷贝本地文件到Pod

如果只是临时传输mysql.sql文件,不需要复杂的持久化配置,直接用kubectl cp命令即可:

  1. 先获取MySQL Pod名称
kubectl get pod -l io.kompose.service=mysql -o name
# 输出格式为pod/mysql-xxxx-xxxx
  1. 执行拷贝命令,将本地文件传到Pod内
    注意:Windows环境下本地路径要写为类Unix格式,比如C:\Users\itayb\Desktop\mysql.sql要写成/c/Users/itayb/Desktop/mysql.sql
# 替换尖括号内的内容为实际路径和Pod名称
kubectl cp <本地mysql.sql路径> <Pod名称>:/tmp/mysql.sql
  1. 进入容器即可操作文件,如需导入数据库可直接执行:
kubectl exec -it <Pod名称> -- bash
# 进入容器后执行导入命令
mysql -uroot -proot crud < /tmp/mysql.sql

内容的提问来源于stack exchange,提问作者ITBYD

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:24:03