如何使用docker搭建mysql环境_mysql docker环境搭建教程
#技术教程 发布时间: 2025-12-20
Docker运行MySQL是最轻量快速的方式,推荐使用官方镜像,通过docker run或docker-compose启动并配置持久化、端口映射和密码;注意认证插件兼容性及常见问题处理。
直接用 Docker 运行 MySQL 是最轻量、最快速的方式,不用装依赖、不污染本地环境,开发和测试场景特别适合。
拉取并运行官方 MySQL 镜像
推荐使用官方 mysql 镜像,版本明确、安全更新及时。比如启动一个 MySQL 8.0 实例:
- 执行命令:docker run -d --name mysql-dev -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /mydata/mysql:/var/lib/mysql -d mysql:8.0
- --name 指定容器名,方便后续管理
- -p 3306:3306 把宿主机 3306 端口映射到容器内
- -e MYSQL_ROOT_PASSWORD 必须设置,否则容器会启动失败
- -v 挂载数据目录,避免容器删除后数据丢失
连接 MySQL 容器
容器运行后,可以用任意 MySQL 客户端连接:
- 本地命令行连接:mysql -h 127.0.0.1 -P 3306 -u root -p,密码就是上面设的
123456 - DBeaver、Navicat 等图形工具,主机填
127.0.0.1,端口3306,用户名root,密码一致 - 注意:MySQL 8.0 默认用
caching_sha2_password插件,部分老客户端不兼容;如遇连接失败,可加参数--default-authentication-plugin=mysql_native_password启动,或进容器改用户认证方式
用 docker-compose 管理更省心
适合需要持久化配置、多服务协同(比如搭配 PHP 或 Node 应用)的场景。新建 docker-compose.yml:
version: '3.8'
services:
mysql:
image: mysql:8.0
container_name: mysql-dev
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 123456
MYSQL_DATABASE: myapp
ports:
- "3306:3306"
volumes:
- ./mysql-data:/var/lib/mysql
- ./my.cnf:/etc/mysql/conf.d/my.cnf:ro
- MYSQL_DATABASE 会自动创建指定库,省去手动建库步骤
- my.cnf 可挂载自定义配置(如修改最大连接数、字符集),内容需符合 MySQL 语法
- 启动只需:docker-compose up -d;停止用 docker-compose down
常见问题与处理
刚上手容易卡在这几个点:
-
端口被占用:检查是否已有 MySQL 进程在跑,或换端口如
-p 3307:3306 -
容器启动后立刻退出:多半是
MYSQL_ROOT_PASSWORD没设,或者挂载目录权限不对(Linux 下可加--user 999:999或提前chown -R 999:999 ./mysql-data) -
中文乱码:在
my.cnf中加上[client] default-character-set = utf8mb4和[mysqld] character-set-server = utf8mb4 -
忘记 root 密码:删掉容器
和数据卷,重新运行(开发环境可接受);生产环境建议用初始化脚本或外部密码管理
上一篇 : Yii2-GridView 中让关联字段带搜索和排序功能示例
下一篇 : Android实现卡片翻转动画
-
SEO外包最佳选择国内专业的白帽SEO机构,熟知搜索算法,各行业企业站优化策略!
SEO公司
-
可定制SEO优化套餐基于整站优化与品牌搜索展现,定制个性化营销推广方案!
SEO套餐
-
SEO入门教程多年积累SEO实战案例,从新手到专家,从入门到精通,海量的SEO学习资料!
SEO教程
-
SEO项目资源高质量SEO项目资源,稀缺性外链,优质文案代写,老域名提权,云主机相关配置折扣!
SEO资源
-
SEO快速建站快速搭建符合搜索引擎友好的企业网站,协助备案,域名选择,服务器配置等相关服务!
SEO建站
-
快速搜索引擎优化建议没有任何SEO机构,可以承诺搜索引擎排名的具体位置,如果有,那么请您多注意!专业的SEO机构,一般情况下只能确保目标关键词进入到首页或者前几页,如果您有相关问题,欢迎咨询!
和数据卷,重新运行(开发环境可接受);生产环境建议用初始化脚本或外部密码管理