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

张开发
2026/4/17 23:39:04 15 分钟阅读

分享文章

mysql如何通过Docker快速搭建_mysql容器化部署实践
连不上MySQL容器需检查-p端口映射是否显式指定、--network自定义网络下必须用-p而非直连IPLinux需确认防火墙未拦截3306root密码须通过MYSQ_ROOT_PASSWORD设置且仅首次初始化生效init脚本仅在空数据目录时执行8.0默认认证插件不兼容旧客户端需加--default-authentication-pluginmysql_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_PASSWORDabc123不设则容器启动失败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助手依托大模型帮助用户记录、整理和分析音视频内容体验用大模型做音视频笔记、整理会议记录。

更多文章