Windows/Mac系统Docker方式安装Mysql(包含对中文字符集 utf8 的支持)

告别虚拟机!用Docker Desktop在Windows/Mac上5分钟跑起Oracle 19c数据库 本文详细介绍了如何在Windows/Mac上使用Docker Desktop快速部署Oracle 19c数据库,告别传统虚拟机的繁琐安装过程。通过图文并茂的步骤指南,帮助开发者在5分钟内完成环境搭建,实现高效开发和测试。 阅读详情

一、Mac系统下Docker安装

访问docker官网:https://www.docker.com/get-started 下载Mac版,下载时需要我们登陆Docker账号,因此我们需要先注册一个Docker账号,这个账号在后面启动应用的时候也可以用于登陆。

 

登陆Docker账号下载,下载后是一个Docker.dmg文件(523.1M),直接双击安装,安装完后,直接点击图标启动Docker,如下图(whaly应是个调皮的鲸鱼)。

下一步完毕之后,就可以在上面见到这个图标,集装箱不跳动的时候就是启动完成。

为了更快速的拉取镜像,可以配置为国内的镜像源。点击图标,选中 Preferences --> Daemon,在Registry mirrors填入国内的Docker容器代理地址(我自己的专属地址:https://5xcgs6ii.mirror.aliyuncs.com),这里推荐阿里云的,也可以用网易云的,这里演示这么获取自己的专属阿里云的容器镜像服务。

访问阿里云官网https://www.aliyun.com/登陆账号,进入管理控制台 --> 产品与服务 --> 弹性计算 --> 容器镜像服务 --> 镜像加速器,复制自己的专属加速器地址到Registry mirrors,重启Docker。

 

二、Win 10系统下Docker安装

访问docker官网:https://www.docker.com,如果有Docker账号的最好先登录账号,单击页面右上角的  ,接下来单击页面的(如果前面没有登录账号的这里会弹出登录页面),在弹出的页面单击Get start with Docker Desktop开始下载

记得中间选择 下载Window版本,这里可能下载比较慢,如果下载比较慢可以到 http://get.daocloud.io/#install-docker-for-mac-windows 下载

这里Win 10 系统即可开启 Hyper-V,然后确定重启

启用或关闭Windows功能

但如果开启Hyper-V后,VMware Workstation再启启动镜像时会提示如下错误,且无法启动。如果想正常使用可以将此选项取消,然后为保险再在PowerShell(开始 -> 右键 -> Windows PowerShell 管理员)执行一次 bcdedit /set hypervisorlaunchtype off 。重启系统才能正常使用VMware Workstation。

bcdedit /set hypervisorlaunchtype off

最后就是双击下载的 Docker for Windows Installer.exe 进行安装。

安装完毕后会提示重启系统,会在系统任务栏出现Docker的小图标,可以根据提示在PowerShell(Shift + 右键 ,进行选择)输入 :

docker info

docker version

docker ps

docker images

docker run hello-world

 

 

三、安装Mysql

同样可以在阿里云控制台镜像搜索中搜索官方进行mysql

选择第一个,里面有很详细的安装说明,也可以看到支持的版本(标签)有8.0.12,我们这次就安装这个版本,

安装之前推荐看下文档中的“Where to Store Data”部分的说明,方便我们理解在Docker中安装Mysql时为什么默认是将数据库数据映射到自己系统本地文件。

安装的方式有多中,这里直接使用如下的一条命令自动安装,

docker run --restart=always --name mysql8.0 -p 3306:3306 -v ~/soft/mysql/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=**** -d mysql:8.0.12 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

参数解释:更详细的参数说明可查看官网对 docker run 的描述(docker run Description)

--restart=always 设置启动Docker后自动运行容器
--name设置此容器的名字
-p 3306:3306 前面是暴露出去的端口,后面是容器内部的服务端口
-v 本地目录:容器路径 最好指定这个参数,明确将容器的挂载点映射到本地文件夹,这个文件夹中会保存容器的数据,其中包括 mysql 数据的数据
-e MYSQL_ROOT_PASSWORD 设置root用户的密码
-d mysql:tag  指定安装mysql的版本,tag可以选择官方文档提供的可选的版本

查看mysql容器信息

$ docker ps

使用工具(Navicat)连接

 连接成功,查看版本,也是我们刚安装的8.0.12的版本。   

 

【说明】 这里需要注意一点的是,官方提供的 MySQL 的 Dockerfile 使用的是 debian 系统,默认没有对语言及 utf8 字符集的支持,如下图:

如果不使用 docker 中的 mysql cli 命令就可以直接使用官方镜像,这个是完全没有任何问题的,但如果需要使用  docker 中的 mysql cli 命令,官方的会无法输入 中文字符,并且显示的中文是乱码。此时我们访问 mysql 官方提供的 Dockerfile.debian (https://github.com/docker-library/mysql),下载其中的 8.0 版本到本地(8.0 版本下的 Dockerfile.debian、docker-entrypoint.sh、config 都需要下载),对 Dockerfile 进行如下修改,重点是添加了对 utf8 编码的支持,并设置为本地语言环境为 en_US.utf8(这个在开始时完全够用)。

#
# NOTE: THIS DOCKERFILE IS GENERATED VIA "apply-templates.sh"
#
# PLEASE DO NOT EDIT IT DIRECTLY.
#
# 系统使用 debian 的 buster-slim 镜像
FROM debian:buster-slim

# 设置 uft8 环境
RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* \
    && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8
ENV LANG en_US.utf8

# 添加 mysql 的用户和组
RUN groupadd -r mysql && useradd -r -g mysql mysql

RUN apt-get update && apt-get install -y --no-install-recommends gnupg dirmngr && rm -rf /var/lib/apt/lists/*

# 添加 gosu,以便从 root 用户轻松降级,更详细可见 https://github.com/tianon/gosu/releases
ENV GOSU_VERSION 1.12
RUN set -eux; \
	savedAptMark="$(apt-mark showmanual)"; \
	apt-get update; \
	apt-get install -y --no-install-recommends ca-certificates wget; \
	rm -rf /var/lib/apt/lists/*; \
	dpkgArch="$(dpkg --print-architecture | awk -F- '{ print $NF }')"; \
	wget -O /usr/local/bin/gosu "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch"; \
	wget -O /usr/local/bin/gosu.asc "https://github.com/tianon/gosu/releases/download/$GOSU_VERSION/gosu-$dpkgArch.asc"; \
	export GNUPGHOME="$(mktemp -d)"; \
	gpg --batch --keyserver hkps://keys.openpgp.org --recv-keys B42F6819007F00F88E364FD4036A9C25BF357DD4; \
	gpg --batch --verify /usr/local/bin/gosu.asc /usr/local/bin/gosu; \
	gpgconf --kill all; \
	rm -rf "$GNUPGHOME" /usr/local/bin/gosu.asc; \
	apt-mark auto '.*' > /dev/null; \
	[ -z "$savedAptMark" ] || apt-mark manual $savedAptMark > /dev/null; \
	apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \
	chmod +x /usr/local/bin/gosu; \
	gosu --version; \
	gosu nobody true

RUN mkdir /docker-entrypoint-initdb.d

RUN apt-get update && apt-get install -y --no-install-recommends \
# for MYSQL_RANDOM_ROOT_PASSWORD
		pwgen \
# for mysql_ssl_rsa_setup
		openssl \
# FATAL ERROR: please install the following Perl modules before executing /usr/local/mysql/scripts/mysql_install_db:
# File::Basename
# File::Copy
# Sys::Hostname
# Data::Dumper
		perl \
# install "xz-utils" for .sql.xz docker-entrypoint-initdb.d files
		xz-utils \
	&& rm -rf /var/lib/apt/lists/*

RUN set -ex; \
# gpg: key 5072E1F5: public key "MySQL Release Engineering <mysql-build@oss.oracle.com>" imported
	key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \
	export GNUPGHOME="$(mktemp -d)"; \
	gpg --batch --keyserver ha.pool.sks-keyservers.net --recv-keys "$key"; \
	gpg --batch --export "$key" > /etc/apt/trusted.gpg.d/mysql.gpg; \
	gpgconf --kill all; \
	rm -rf "$GNUPGHOME"; \
	apt-key list > /dev/null

# 添加 mysql 环境变量
ENV MYSQL_MAJOR 8.0
ENV MYSQL_VERSION 8.0.22-1debian10

RUN echo 'deb http://repo.mysql.com/apt/debian/ buster mysql-8.0' > /etc/apt/sources.list.d/mysql.list

# the "/var/lib/mysql" stuff here is because the mysql-server postinst doesn't have an explicit way to disable the mysql_install_db codepath besides having a database already "configured" (ie, stuff in /var/lib/mysql/mysql)
# also, we set debconf keys to make APT a little quieter
RUN { \
		echo mysql-community-server mysql-community-server/data-dir select ''; \
		echo mysql-community-server mysql-community-server/root-pass password ''; \
		echo mysql-community-server mysql-community-server/re-root-pass password ''; \
		echo mysql-community-server mysql-community-server/remove-test-db select false; \
	} | debconf-set-selections \
	&& apt-get update \
	&& apt-get install -y \
		mysql-community-client="${MYSQL_VERSION}" \
		mysql-community-server-core="${MYSQL_VERSION}" \
	&& rm -rf /var/lib/apt/lists/* \
	&& rm -rf /var/lib/mysql && mkdir -p /var/lib/mysql /var/run/mysqld \
	&& chown -R mysql:mysql /var/lib/mysql /var/run/mysqld \
# ensure that /var/run/mysqld (used for socket and lock files) is writable regardless of the UID our mysqld instance ends up having at runtime
	&& chmod 1777 /var/run/mysqld /var/lib/mysql

# 指定挂载点为 /var/lib/mysql,也可以通过 docker run -v 宿主机目录:容器中挂载点
VOLUME /var/lib/mysql

# Config files
COPY config/ /etc/mysql/
COPY docker-entrypoint.sh /usr/local/bin/
# backwards compat
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh
# 作用类似于 CMD,但更加灵活复杂,使用后会将 CDM 的内容作为参数传给 ENTRYPOINT 指令
ENTRYPOINT ["docker-entrypoint.sh"]

# 声明运行时暴露的端口(port1 port2 …)。但是在运行时并不会默认暴露这个配置的端口,还是需要 run 的时候指定,
EXPOSE 3306 33060
CMD ["mysqld"]

执行如下命令开始构建镜像,这里通过 -f  参数指定 Dockerfile 文件为 Dockerfile.debian,如果使用默认文件名可以不用指定。

docker build -t mysql-utf8:8.0.22 -f ./Dockerfile.debian .

构建成功后可以通过 docker images 查看刚才构建出的 mysql 镜像。

最后我们使用这个镜像,通过如下命令启动一个容器

docker run --name mysql8.0 -p 33307:3306 -v /u01/docker-mysql/datadir:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=root用户密码 -d mysql-utf8:8.0.22 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci 

此时进入容器后,发现已经支持了 utf8

 

 

如果是直接在linux系统下安装mysql5.X或者8.X版本可参考我的另一篇博客Centos7环境下离线安装mysql 5.7 / mysql 8.0

参考资料:https://hub.docker.com/r/_/mysql/      

 

Mac OS 配置Docker+Mysql 要在 Docker 中创建和测试 MySQL 服务器,您要做的第一件事是从拉取 MySQL 官方镜像。如果您需要特定版本的 MySQL,请替换latest为版本号。您可以运行该命令来查看从 Docker Hub 中提取的 Docker 镜像列表。 阅读详情

相关推荐

mac 使用docker安装mysql 并连接到navicat

使用docker安装mysql 并连接到navicat

qq_61062215的博客 1739

mac 使用docker 安装mysql

mysql,docker

zl6605781的博客 4137

Mac 安装docker,再安装mysql遇到的问题

Mac 安装docker,再安装mysql遇到的问题

王先生的博客 1185

用MacBook实操:docker本地部署mysql+php+nginx坏境

用macbook,带大家实操用docker部署mysql+php+nginx环境。之前的,欢迎阅读。之前的是服务器上配置环境,现在在mac本地搭建全栈开发环境。本文环境:时间:2023年mac:MacBook Pro (13-inch, 2020, Four Thunderbolt 3 ports) 版本11.6处理器:2.3 GHz 四核Intel Core i7mysql:5.6php:7.2.34……

happy921212的博客 4651

Superset Docker容器安装MySQL驱动实战指南

Apache Superset作为主流开源BI工具,本身不内置数据库驱动,需手动集成MySQL连接支持。其底层依赖SQLAlchemy统一访问层,而MySQL驱动(mysqlclient/PyMySQL)的正确安装涉及Python版本兼容性、C编译环境、Docker镜像构建时序与包加载机制等多层技术原理。技术价值在于实现稳定、可复现、符合不可变基础设施原则的数据源接入能力;典型应用场景包括Docker/K8s环境下的BI平台部署、CI/CD自动化镜像构建及多数据源统一管理。本文聚焦Superset容器中My

weixin_34239592的博客 327

Mac 安装 MySQL:Homebrew、DMG、容器化三条路径与配置避坑

本地开发环境中的数据库依赖,通常需要兼顾版本稳定、路径隔离与跨芯片架构兼容。在 Mac 上,包管理器、官方安装包与容器化三种方式,分别通过统一前缀、图形向导和轻量虚拟化实现 MySQL 的部署与管理,其差异会直接影响 PATH 配置、服务启停、数据目录与升级卸载成本。对 Apple Silicon 与 Intel 用户而言,Homebrew 前缀不同,my.cnf、utf8mb4 字符集、认证插件与端口占用更需提前规划。面向本地调试、CI 集成测试与临时验证场景,合理选择安装路径并一次做对核心配置,能显著减

weixin_34117211的博客 316

DOCKER安装MYSQL(挂载到本地、修改字符集配置)

标签:Linuxdockermysqllinuxcentos 拉取mysql5.7,这里不写:5.7默认拉取最新版本的 docker pull mysql:5.7 查看下载镜像 docker images 启动 docker run -p 3306:3306 --name mysql-master \ -v /mydata/mysql/master/log:/var/log/mysql \ -v /mydata/mysql/master/data:/var/li...

weixin_48777366的博客 435

Wukong-AICRM Docker一键部署:半小时搞定Java+Vue智能CRM系统

在业务系统选型与快速部署的实践中,我们常常面临一个矛盾:一方面希望系统功能强大、技术栈现代;另一方面又受限于部署环境的复杂性,尤其是当项目涉及前后端分离、数据库、中间件等多个组件时,手动部署和联调会耗费大量时间。Wukong-AICRM 作为一个基于 Java + Vue 的智能对话式客户关系管理系统,其 Docker 一键安装方案完美地解决了这一痛点。本文将为你完整拆解 Wukong-AICRM 的 Docker 安装全流程,从环境准备、镜像拉取、容器启动到访问验证,每一步都附带详细的命令、配置说明和排错

weixin_30753873的博客 381

PostgreSQL安装全攻略:Windows/macOS/Linux/Docker四大平台详解

数据库是应用开发的基石,而PostgreSQL作为功能强大的开源关系型数据库,正被越来越多的团队采用。安装PostgreSQL看似简单,但版本选择、平台差异、初始化配置等环节常让新手手足无措。本文将带你从数据库服务端与客户端的基本概念出发,厘清psql、pgAdmin等组件的角色,再分平台拆解Windows安装包、macOS Homebrew、Linux包管理器及Docker容器四种主流安装方式。同时深入讲解数据目录、pg_hba.conf认证配置、端口监听与防火墙联动等关键实践,并给出忘记密码、服务启动失

weixin_33875564的博客 349

HR转行学MySQL:从安装到SQL查询的保姆级实战指南

数据库是数据存储与管理的核心技术,而SQL作为操作数据库的标准语言,是高效处理结构化数据的必备工具。理解数据库实例-库-表-行-列的层级逻辑后,可通过SQL完成数据的插入、查询、过滤、聚合与多表关联,极大提升数据处理效率。索引机制能够显著优化查询性能,但需权衡写入开销。MySQL作为开源数据库,语法接近标准SQL,广泛应用于互联网行业,尤其适合非技术岗位快速掌握数据技能。在HR工作场景中,从员工花名册的精确筛选到各部门薪酬的聚合统计,从多表关联分析到子查询过滤,MySQL均能替代繁琐的手工Excel操作,实

weixin_33806300的博客 393

Django连接MySQL跨平台配置指南:从驱动选择到生产环境部署

数据库连接是Web应用开发的基础,其核心在于通过驱动程序实现应用与数据库的通信。在Python生态中,Django框架通过数据库后端引擎与MySQL交互,而mysqlclient作为官方推荐的C扩展驱动,提供了高性能的原生协议支持。其技术价值在于确保了数据操作的稳定性和效率,是构建数据驱动型应用的关键。在实际开发中,尤其是在macOS和Windows等异构环境下,环境配置、依赖管理和认证插件兼容性成为常见挑战。本文聚焦于mysqlclient驱动的安装与配置,深入解析Django的DATABASES配置项,

cmff98425的博客 377

MySQL安装决策地图:不是点下一步,而是做关键配置选择

MySQL安装本质上是数据库与操作系统、网络、文件系统和安全策略建立环境契约的过程。它涉及字符集编码(如utf8mb4)、认证插件(如caching_sha2_password)、服务运行权限、端口绑定与数据目录规划等核心原理。正确安装直接决定开发联调效率、中文支持稳定性及生产环境安全性。不同场景——本地学习、Docker开发、测试环境部署或物理机生产上线——需匹配差异化的安装路径与初始化配置。本文聚焦真实工程约束,解析Windows MSI陷阱、macOS Homebrew配置盲区、Linux syste

weixin_30561425的博客 476

Mac系统Nacos安装启动全攻略:解决Java环境与脚本适配问题

服务发现与配置管理是微服务架构中的核心基础组件,它们通过集中化管理服务地址和运行时配置,解决了分布式系统中服务动态上下线与配置热更新的难题。其技术原理在于构建一个高可用的注册中心与配置服务器,实现服务元数据与配置信息的统一存储、推送与同步。这一机制为微服务带来了服务治理的自动化与配置管理的实时性,极大提升了系统的可维护性与弹性。在应用场景上,无论是电商、金融还是物联网平台,只要涉及多服务协作与动态配置,都需要此类组件的支持。本文聚焦于在Mac环境下部署Nacos这一主流组件时,因Java版本冲突、环境变量配

weixin_30470643的博客 432

【Docker】

Docker诞生于开发运维环境不一致的痛点,通过“镜像打包+容器隔离”实现应用快速部署与高效资源利用。其核心思想源于集装箱,以轻量级容器替代虚拟机,显著提升性能与可移植性。基于Client-Server架构,Docker由引擎、镜像、容器与仓库构成,支持DevOps全流程。官方推荐在Linux服务器上通过apt源安装Docker Engine,确保稳定与可维护性,适用于生产环境。

athicket 1359

达梦数据库三种安装方式详解:图形化、静默与Docker容器化部署

数据库安装部署是系统架构的起点,直接影响后续的开发效率和运维成本。其核心原理是根据不同环境需求,选择最合适的部署方式来实现软件与操作系统的集成。在国产化替代和云原生转型的背景下,掌握灵活多样的部署技术具有重要价值,它能支撑从传统物理机到现代化容器平台的各种应用场景。本文将聚焦于达梦数据库这一成熟的企业级国产数据库,深入探讨其三种主流安装方式:图形化安装适合新手快速上手,命令行静默安装是实现自动化与批量部署的关键,而Docker容器化安装则是敏捷开发与云原生环境的最佳实践。理解这些方式的适用场景和细节,能帮助

weixin_34377919的博客 335

运维系列&数据库系列:Windows/Mac系统Docker方式安装Mysql(包含对中文字符集 utf8 的支持)

Windows/Mac系统Docker方式安装Mysql(包含对中文字符集 utf8 的支持)

weixin_54626591的博客 161

docker学习笔记

1.安装 1.1查看是否已经安装 yum list installed | grep docker 2.2 安装docker yum -y install docker 阿里云ECS服务器和阿里云IOT平台账号 1.爱尔-阿里云ECS服务器 服务器账号 服务器IP:121.41.47.36 用户名:liusaisai 密码: liusaisai123 端口号和项目统计 32121,用于MQTT数据接入EMQX服务器,tcp监听端口;专用 32122,私有MQTT服务器EMQX的控制台网页

走过,路过,别错过的博客 493

隐藏在WAV音频里的秘密:用Python脚本从‘噪音’CTF题中提取Flag

本文详细解析了如何利用Python脚本从WAV音频文件中提取隐藏的Flag信息,特别针对CTF比赛中的音频隐写技术。通过分析WAV文件结构、编写Python解析脚本,并解决字节序处理和异常值等实际问题,帮助读者掌握从‘噪音’中解码Flag的技巧。

weixin_30617737的博客 482

Ubuntu 18.04 Docker实战:从零安装到MySQL与Redis容器化部署

容器化技术正在重塑软件交付方式,它通过将应用及其依赖环境打包为标准化镜像,让服务在任意Linux主机上都能一致运行。理解镜像、容器与仓库的关系,掌握数据卷、端口映射和网络模式,是高效使用Docker的基础。在Ubuntu 18.04上,从官方源安装Docker Engine、配置镜像加速器后,可以用一条命令拉起MySQL 8.0,并通过自定义网络与Redis主从集群互联。借助Docker Compose,还能将多容器服务以YAML文件统一编排,实现“配置即代码”的快速迁移。本实战笔记围绕镜像管理、docke

weixin_34275734的博客 330

【成功安装】Ubuntu22.04极简方式安装Nvidia驱动

今天下午安装了实机的Ubuntu,面临在Linux上安装Nvidia的问题,被这个问题困扰了一整个下午,各种报错整的我头大。后来发现了不需要按照传统的方式去Nvidia官网下载,再命令行安装,直接在线安装即可。

清筱明的博客 5345

把 ABAP 选择屏幕 Selection Screen 打造成可维护的交互面板:常用屏幕元素与动态控制全解析

本文详细介绍了ABAP报表中Selection Screen的设计技巧,包括空行(SKIP)、横线(ULINE)、注释(COMMENT)等基础元素的使用方法,以及如何通过MODIF ID实现动态界面调整。重点讲解了行内布局(BEGIN OF LINE)、按钮(PUSHBUTTON)和区块(BLOCK)等高级功能,帮助开发者将选择屏幕从"能用"提升到"好用、易扩展、可维护"的水平。文章还分享了项目实践中的命名规范和分组策略,特别适合需要优化ABAP报表用户体验的开发人员

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 330
上一篇: The Pathologies of Big Data(大数据病理)
下一篇: HDP 之 Timeline Service 2.0
Yore Yuen
博客等级 码龄9年 8646粉丝 58原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yore Yuen

你的支持认可是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值