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

Docker 一键部署 MySQL 8.0

一个 Dockerfile,一个初始化脚本,5分钟拿到一个随时可用的 MySQL,后面接 Hive 时直接连。

一、为什么还要单独写 MySQL?

因为 Hive 的元数据需要一个数据库来存(表结构、分区信息等),默认的 Derby 只能单连接,生产级使用都换成 MySQL 或 PostgreSQL。

核心要求

  • 使用 MySQL 8.0
  • 支持远程连接(后面 Hive 要从另一个容器连)
  • 字符集和时区预先配置好,避免乱码和时区坑
  • 数据持久化到宿主机,不会因容器删除而丢数据

二、目录结构

新建一个文件夹mysql-docker,放以下三个文件:

mysql-docker/ ├── Dockerfile ├── my.cnf └── init.sql # 初始化时自动创建的 Hive 元数据库及用户

三、文件内容

1. Dockerfile

FROM mysql:8.0 # 设置 root 密码,并创建 Hive 元数据库和用户(通过环境变量 + init.sql) ENV MYSQL_ROOT_PASSWORD=root123 ENV MYSQL_DATABASE=hive_metastore ENV MYSQL_USER=hive ENV MYSQL_PASSWORD=root123 # 复制自定义 MySQL 配置 COPY my.cnf /etc/mysql/conf.d/my.cnf # 初始化脚本会在容器首次启动时自动执行 COPY init.sql /docker-entrypoint-initdb.d/ # 暴露默认端口 EXPOSE 3306

2. my.cnf

[mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci default-time-zone='+08:00' [client] default-character-set=utf8mb4

3. init.sql

-- 创建 Hive 元数据库 CREATE DATABASE IF NOT EXISTS hive_metastore DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建 hive 用户(如果已存在则跳过) CREATE USER IF NOT EXISTS 'hive'@'%' IDENTIFIED WITH mysql_native_password BY 'root123'; -- 授权 GRANT ALL PRIVILEGES ON hive_metastore.* TO 'hive'@'%'; -- 刷新权限 FLUSH PRIVILEGES;

注意init.sql会在容器第一次启动时自动执行,重复启动不会再次执行,避免重复建库报错。

四、构建镜像并启动容器

0. 配置 Docker 镜像加速

如果网络不稳定,可以配置国内镜像源。

在 Docker Desktop 设置 → Docker Engine 中添加:

{ "registry-mirrors": [ "https://docker.1ms.run", "https://docker.xuanyuan.me" ] }

1. 构建

方式A:最简单,会有高级,docker 认为把密码写在 Dockerfile 不安全

docker build -t mysql:8.0 .

方式B:忽略警告

docker build --build-arg MYSQL_ROOT_PASSWORD=root123 --build-arg MYSQL_PASSWORD=root123 -t mysql:8.0 .

方式 C:直接加--quiet不输出警告

docker build -t mysql:8.0 . 2>&1 | grep -v "SecretsUsedInArgOrEnv"

2. 启动容器(挂载数据卷)

docker run -d \ --name mysql \ -p 3306:3306 \ -v /Users/用户/bigdata/dev/docker/mysql/mysql-data:/var/lib/mysql \ mysql:8.0
  • -v将 Mac 上的mysql-data目录映射到容器内的数据目录,确保数据持久化。
  • 首次启动会执行init.sql,稍等约 20 秒让 MySQL 完全就绪。

3. 检查运行状态

docker logs mysql

看到[Server] ready for connections.且没有报错,即成功。

五、验证连接

1. 用 root 连入 MySQL

docker exec -it mysql mysql -uroot -proot123

进入 MySQL 命令行后:

SHOW DATABASES;

应能看到hive_metastore数据库。

2. 测试 hive 用户连接(模拟远程)

在 Mac 上任意 MySQL 客户端(如 DBeaver、DataGrip)连接:

  • Host:localhost
  • Port:3306
  • User:hive
  • Password:root123
  • Database:hive_metastore

如果连接成功,说明 MySQL 已准备就绪。

六、数据安全与日常维护

数据备份:直接备份 Mac 上的/Users/你的用户名/mysql-data目录,或使用mysqldump

docker exec mysql mysqldump -uroot -proot123 hive_metastore > metastore_bak.sql

镜像更新:如果以后要改密码或添加其他库,修改init.sqlDockerfile,重新构建即可。

注意:若数据卷已存在,新init.sql不会再次执行,需要手动删除数据卷目录。

七、踩坑问题

  • Public Key Retrieval is not allowed

这个错误是因为 MySQL 8.0 默认使用caching_sha2_password认证插件,而客户端连接时需要通过公钥加密密码。

如果客户端没有请求公钥,或者连接 URL 中没允许,就会报Public Key Retrieval is not allowed

解决办法:

修改MySQL 用户的认证插件为老式的mysql_native_password

ALTERUSER'hive'@'%'IDENTIFIEDWITHmysql_native_passwordBY'root123';FLUSHPRIVILEGES;

http://www.jsqmd.com/news/1083687/

相关文章:

  • 2026年还在找低价 ChatGPT Plus?最近被封和失效变多后,我更建议你先看稳定
  • 让PPT演示时间掌控自如:PPTTimer智能计时器全面解析
  • 爬虫反爬进阶——IP代理池、请求指纹、字体反爬实战
  • 淮南装修公司排名大全
  • HarmonyOS7 网络卡顿别只会重试:QUIC、持久连接和预建链优化
  • Navicat重置教程:macOS上无限试用Navicat Premium的终极指南
  • VRPN:异构设备网络化集成的核心协议与实战指南
  • 【课程设计/毕业设计】基于 SpringBoot+Vue 的企业员工运维日志管理系统的设计与实现 基于 SpringBoot+Vue 的员工工作轨迹记录管理系统【附源码、数据库、万字文档】
  • Python 爬虫实战:北极星日淘日本本土商品数据同步采集(反爬+增量更新)
  • ArkUI 状态管理与页面交互核心:@State、弹窗与路由
  • 3分钟搞定!Soundflower虚拟音频驱动让Mac应用间音频流转如此简单
  • 基于CAMx的空气质量模拟及污染来源解析技术与案例分析
  • 2026年国内用户使用 ChatGPT Plus / Pro:为什么我更建议先考虑稳定,而不是只看价格?
  • 终极宝可梦随机化器:Universal Pokemon Randomizer ZX完全指南,5分钟打造你的专属冒险
  • 【供应链建设】伸缩延长杆源头工厂供应商的工程能力是建立供应链的关键
  • 靠谱AI营销的企业
  • ThinkAdmin路径遍历漏洞CVE-2020-25540深度剖析与防御实战
  • Qwerty Learner:如何通过打字练习重构你的英语肌肉记忆?
  • 如何快速掌握鼠标连点器:面向新手的完整自动化工具指南
  • Python 高性能并发:从 GIL 瓶颈到协程调度的工程突围
  • GitHub今日热榜 | 2026-06-25:Agent开发环境爆发,7个项目首次入榜
  • 鸿翼OpenContent™ AI智能多模态数据管理平台介绍与功能场景
  • TranslucentTB:Windows任务栏透明化终极指南,打造个性化桌面体验
  • MultiWFN安装配置全攻略:从源码编译到量子化学分析环境搭建
  • 聚氨酯封边岩棉夹芯板的优异性能与广泛应用分析
  • Spring Boot 集成 Tess4J 实现图片OCR文字识别
  • 5分钟快速上手《经济研究》LaTeX投稿模板:终极排版解决方案
  • 如何快速备份QQ空间:GetQzonehistory完整数据备份指南
  • 全栈开发别再瞎加班了!10 个 AI 神器 + 3 个实战项目,效率直接翻 3 倍
  • 【软工方法论28】代码评审最佳实践