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助手,依托大模型,帮助用户记录、整理和分析音视频内容,体验用大模型做音视频笔记、整理会议记录。

相关推荐
我是一颗柠檬5 小时前
【MySQL全面教学】MySQL面试高频考点汇总Day15(2026年)
数据库·后端·mysql·面试
星空椰6 小时前
Python 面向对象高级:继承与类定义详解
开发语言·python
橙淮6 小时前
并发编程(六)
java·jvm
凯瑟琳.奥古斯特6 小时前
高阶子查询题目精炼
开发语言·数据库·python·职场和发展·数据库开发
身如柳絮随风扬6 小时前
数据库读写分离:从原理到实战,构建高并发系统
数据库·mysql
风之所往_6 小时前
Python 3.4 新特性全面总结
python
EntyIU7 小时前
JVM内存与GC笔记
java·jvm·笔记
太阳上的雨天7 小时前
任何格式的文件转Markdown
python·ai
提笔了无痕7 小时前
RAG存储策略中.md格式的切片与存储怎么处理
数据库·ai·rag