Docker运行MySQL是最轻量快速的方式,推荐使用官方镜像,通过docker run或docker-compose启动并配置持久化、端口映射和密码;注意认证插件兼容性及常见问题处理。
直接用 Docker 运行 MySQL 是最轻量、最快速的方式,不用装依赖、不污染本地环境,开发和测试场景特别适合。
拉取并运行官方 MySQL 镜像
推荐使用官方
镜像,版本明确、安全更新及时。比如启动一个 MySQL 8.0 实例:
执行命令:
dockerrun -d --namemysql-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 客户端连接:
PHP 8.5.5
PHP 8.5.5 是 PHP 8.5 分支的维护更新版本。该版本延续了“小步快跑”的迭代逻辑,通过深度错误修复、底层性能微调以及安全加固,旨在为开发者提供一个更健壮、更高效的运行环境。该版本严格遵守语义化版本规范,不包含破坏性变更。
下载
本地命令行连接:
mysql -h 127.0.0.1 -P 3306 -u root -p
,密码就是上面设的
DBeaver、Navicat 等图形工具,主机填
,端口
,用户名
,密码一致
注意:MySQL 8.0 默认用
插件,部分老客户端不兼容;如遇连接失败,可加参数
启动,或进容器改用户认证方式
用 docker-compose 管理更省心
适合需要持久化配置、多服务协同(比如搭配 PHP 或 Node 应用)的场景。新建
:
MYSQL_DATABASE
会自动创建指定库,省去手动建库步骤
my.cnf
可挂载自定义配置(如修改最大连接数、字符集),内容需符合 MySQL 语法
启动只需:
docker-compose up -d
;停止用
docker-compose down
常见问题与处理
刚上手容易卡在这几个点:
端口被占用
:检查是否已有 MySQL 进程在跑,或换端口如
容器启动后立刻退出
:多半是
没设,或者挂载目录权限不对(Linux 下可加
或提前
)
中文乱码
:在
中加上
和
忘记 root 密码
:删掉容器和数据卷,重新运行(开发环境可接受);生产环境建议用初始化脚本或外部密码管理
mysql123456127.0.0.13306rootcaching_sha2_password--default-authentication-plugin=mysql_native_passworddocker-compose.ymlversion: '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
-p 3307:3306MYSQL_ROOT_PASSWORD--user 999:999chown -R 999:999 ./mysql-datamy.cnf[client] default-character-set = utf8mb4[mysqld] character-set-server = utf8mb4