Wsl解决MySQL容器跨域权限问题小结

 更新时间:2026年07月20日 09:56:00   作者:关关长语  
这篇文章给大家介绍Wsl解决MySQL容器跨域权限问题,本文结合实例给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧

在使用WSL(Windows Subsystem for Linux)中运行MySQL容器时,可能会遇到跨域权限问题,尤其是在尝试从外部客户端(如浏览器或移动应用)访问MySQL服务时。这类问题通常与CORS(跨源资源共享)策略有关,而不是直接的MySQL容器权限问题。

问题分析

通过查阅资料,可以知道主要原因在于Mysql 容器运行时,容器内部需要特殊执行角色账户,而通过Wsl 从宿主目录映射到子系统内部,中间转换过程中,无法正常映射角色权限,导致目录绑定跨域宿主-子系统-docker容器出现权限不足。子系统挂载数据库目录失败,虽然目录中创建了对应的初始化数据配置,实际运行时,容器服务内部无法正常运行。
实际报错日志如下:

mysqld: Cannot change permissions of the file 'ca.pem' (OS errno 1 - Operation not permitted)

解决办法

解决办法是,不把当前windows对应路径挂在到容器中,使用命名数据卷进行数据持久化,将权限交由容器内部处理,不过度干涉,创建过程如下:

sudo docker volume create [volume_name]

查看命名数据卷信息。

sudo docker volume inspect [volume_name]

输出如下:

[
    {
        "CreatedAt": "2026-07-16T18:49:17+08:00",
        "Driver": "local",
        "Labels": null,
        "Mountpoint": "/var/lib/docker/volumes/[volume_name]/_data",
        "Name": "mysql_data",
        "Options": null,
        "Scope": "local"
    }

实际真实目录挂载点在wsl 子系统中。不管运行之后容器是否删除,命令数据卷在没被删除之前,内部数据均存在。
挂载时,命令行执行命令如下:

sudo docker -v [volume_name]:/var/lib/mysql ....

使用docker-compose 时,有两种方式,一种是直接引入当前已经创建的命令数据卷,一种是指定数据卷名称,由docker-compose 运行配置配置过程中进行指定创建。

使用已存在命名数据卷。

version: '3.8'
services:
  mysql:
    image: mysql:8.4.10
    container_name: mysql
    volumes:
      - mysql_data:/var/lib/mysql       # 数据持久化
	#...
volumes:
  mysql_data:
    external: true

自定义创建。

version: '3.8'
services:
  mysql:
    image: mysql:8.4.10
    container_name: mysql
    volumes:
      - mysql_data:/var/lib/mysql       # 数据持久化
    #...
volumes:
  mysql_data:

通过查看数据卷列表。

sudo  docker volume ls

可以看到一个以[servicename]_[volumename] 命名的数据卷。

DRIVER    VOLUME NAME
local     mysql_mysql_data

到此这篇关于Wsl解决MySQL容器跨域权限问题小结的文章就介绍到这了,更多相关mysql跨域权限问题内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 从零开始搭建MySQL MMM架构

    从零开始搭建MySQL MMM架构

    这篇文章主要介绍了从零开始搭建MySQL MMM架构,本文讲解了配置MySQL Relication、新建同步数据库需要的用户、同步主从数据库、安装MMM、配置MMM、启动MMM等问题,需要的朋友可以参考下
    2015-04-04
  • 深度分析mysql GROUP BY 与 ORDER BY

    深度分析mysql GROUP BY 与 ORDER BY

    鉴于项目的需要,就从网上找到该文章,文章分析得很详细也很易懂,在android里,(不知道是不是现在水平的限制,总之我还没找到在用ContentProvider时可以使用子查询),主要方法是用SQLiteDatabase 的 rawQuery,直接运行sql语句就可以了。
    2014-06-06
  • MySQL常用的系统函数一览

    MySQL常用的系统函数一览

    这篇文章主要介绍了MySQL常用的系统函数使用及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • MySQL索引概念及七种索引类型分享介绍

    MySQL索引概念及七种索引类型分享介绍

    这篇文章主要介绍了MySQL索引概念及七种索引类型分享介绍,索引是存储引擎用于快速找到记录的一种数据结构,这也是索引最基本的功能
    2022-08-08
  • MySQL中表锁和行锁机制浅析(源码篇)

    MySQL中表锁和行锁机制浅析(源码篇)

    在计算机科学中,锁是在执行多线程时用于强行限制资源访问的同步机制,即用于在并发控制中保证对互斥要求的满足,下面这篇文章主要给大家介绍了MySQL中表锁和行锁机制浅析的相关资料,需要的朋友可以参考下
    2022-11-11
  • mysql慢查询介绍及开启技巧详解

    mysql慢查询介绍及开启技巧详解

    这篇文章主要为大家介绍了mysql慢查询介绍及开启技巧详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-05-05
  • MySQL中的聚集索引、二级索引使用解读

    MySQL中的聚集索引、二级索引使用解读

    这篇文章主要介绍了MySQL中的聚集索引、二级索引使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-07-07
  • mysql alter table修改表命令整理

    mysql alter table修改表命令整理

    这篇文章主要介绍了mysql alter table修改表命令整理的相关资料,需要的朋友可以参考下
    2016-10-10
  • 一文详解MySQL如何设置自动备份任务

    一文详解MySQL如何设置自动备份任务

    设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用 Bash 脚本和 Cron 任务在 Linux 系统上设置 MySQL 数据库的自动备份任务
    2025-06-06
  • 深入理解MySQL中查询表的历史操作记录

    深入理解MySQL中查询表的历史操作记录

    在数据库管理中,了解如何查询表的历史操作记录对于追踪数据变更、审计数据以及恢复误操作至关重要,本文将深入探讨MySQL中查询表的历史操作记录的方法,有需要的可以了解下
    2025-12-12

最新评论