mysql如何通过Docker快速搭建_mysql容器化部署实践

连不上MySQL容器需检查:-p端口映射是否显式指定、--network自定义网络下必须用-p而非直连IP;Linux需确认防火墙未拦截3306;root密码须通过MYSQ_ROOT_PASSWORD设置且仅首次初始化生效;init脚本仅在空数据目录时执行;8.0默认认证插件不兼容旧客户端,需加--default-authentication-plugin=mysql_native_password。docker run 启动 MySQL 容器时连不上?检查 -p 和 --network默认情况下 docker run -d -p 3306:3306 mysql:8.0 看似正确,但宿主机 3306 被占用、或容器没暴露端口、或用了自定义网络却没配好网关,都会导致本地 mysql -h 127.0.0.1 -P 3306 连不上。-p 3306:3306 必须显式写,MySQL 镜像不自动发布端口若用 --network mynet,宿主机无法直连容器 IP,得走 -p 映射,或改用 docker exec -it mysql-container mysql -uroot -pMac/Windows 上 Docker Desktop 的 localhost 可连,Linux 宿主机需确认 iptables/firewalld 没拦截 3306root 密码设了却还是提示 Access denied?看 MYSQ_ROOT_PASSWORD 和初始化时机MySQL 官方镜像要求必须通过环境变量 MYSQ_ROOT_PASSWORD 设置 root 密码,且只在容器首次启动、数据目录为空时生效。如果反复删容器重跑但没清 -v 挂载的卷,旧数据还在,密码不会被覆盖。务必加 -e MYSQL_ROOT_PASSWORD=abc123,不设则容器启动失败(8.0+)挂载了 -v ./mysql-data:/var/lib/mysql 就得自己清目录,否则再跑也不会重新初始化想跳过密码直接进,可临时加 --skip-grant-tables,但仅限调试,不能用于生产容器里执行 SQL 初始化脚本失败?注意 /docker-entrypoint-initdb.d/ 的触发条件把 init.sql 放进 /docker-entrypoint-initdb.d/ 目录下,只有在容器首次初始化数据库时才执行------也就是 /var/lib/mysql 为空、且 MYSQL_ROOT_PASSWORD 已设置的前提下。 通义听悟 阿里云通义听悟是聚焦音视频内容的工作学习AI助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。

相关推荐
构建的乐趣11 小时前
测度(Measure)和概率测度(Probability Measure) 测度和度量的区别
python
清水白石00811 小时前
把事故变成护城河:如何设计回归测试,防止“订单重复创建”这类历史 Bug 卷土重来?
python·bug
.柒宇.11 小时前
Redis高频面试题与跳跃表原理详解
数据库·redis·缓存
狐狐生风11 小时前
LangGraph 工具调用集成
python·langchain·prompt·agent·langgraph
MATLAB代码顾问11 小时前
【智能优化】无穷优化算法(INFO)原理与Python实现
开发语言·python·算法
Bryce学亮11 小时前
股票数据成本分析工具
数据库
SilentSamsara11 小时前
迭代器协议:`__iter__` / `__next__` 的完整执行流程
开发语言·人工智能·python·算法·机器学习
yuanpan11 小时前
Python + psutil 实战:开发一个简易系统监控工具
linux·运维·python
思麟呀11 小时前
MySQL表的约束
数据库·mysql
步十人12 小时前
【FastAPI】ORM-02.使用 ORM 高效处理数据库逻辑
服务器·数据库·fastapi