跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

mysql在Docker环境中快速部署与基础配置

一条命令即可运行可远程连接的MySQL容器:docker run -d --name mysql-dev -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 --restart=always -v /data/mysql:/var/lib/mysql mysql:8.0,需注意用户授权、配置挂载路径及数据卷权限。 直接拉起一个可连的 MySQL 容器 不需要构建镜像、不用改配置文件,
docker run
一条命令就能跑起来一个带密码、可远程连接的 MySQL 实例,适合开发/测试快速验证。 默认 root 密码通过
-e MYSQL_ROOT_PASSWORD=123456
设置,不设会启动失败 端口映射必须显式声明:
-p 3306:3306
,否则容器内服务无法从宿主机访问 加
--restart=always
避免 Docker 重启后服务掉线 首次运行会自动初始化数据目录,后续重启复用卷内容,不会重置密码或清库
docker run -d \ --name mysql-dev \ -e MYSQL_ROOT_PASSWORD=123456 \ -p 3306:3306 \ --restart=always \ -v /data/mysql:/var/lib/mysql \ -d mysql:8.0
连接被拒绝?检查 bind-address 和用户权限 容器内 MySQL 默认只监听
127.0.0.1
,即使端口映射了,外部客户端也会报
Connection refused
或
Access denied for user
。 MySQL 8.0+ 默认创建的
root@localhost
用户不能远程登录,必须额外授权
root@'%'
启动时加
-e MYSQL_ROOT_HOST='%'
可让初始化脚本自动创建通配符主机用户(仅限 8.0.13+) 若已启动,进容器执行
mysql -uroot -p123456 -e "CREATE USER 'root'@'%' IDENTIFIED BY '123456'; GRANT ALL ON *.* TO 'root'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;"
无需修改
my.cnf
中的
bind-address
—— Docker 容器默认用
0.0.0.0
监听,问题几乎全出在用户权限上 挂载配置文件导致启动失败的常见原因 想自定义
max_connections
或
character_set_server
?别直接挂载整个
/etc/mysql/my.cnf
,MySQL 容器启动逻辑对配置路径很敏感。 Trae win Trae Windows 官方版本现已全面支持 Win10 和 Win11 系统(64位)。国内开发者可直接访问 Trae 中文官网(trae.cn 或 trae.com.cn),一键下载官方正版 .exe 安装包,享受国内直连的高速稳定体验。安装过程极其简便,双击即可运行,并支持一键无缝导入 VS Code 或 Cursor 的原有主题、快捷键及插件配置。登录支持手机号、微信或稀土掘金账号。内置免费的豆包与 DeepSeek 等顶级大模型,让你开箱即用,轻松开启高效的 AI 智能编程之旅。 下载 官方镜像只认
/etc/mysql/conf.d/*.cnf
和
/etc/mysql/mysql.conf.d/*.cnf
下的文件 挂载单个配置文件时,路径必须是
/etc/mysql/conf.d/custom.cnf
,且文件需有 Unix 换行符(Windows 编辑保存易出错) 配置项写错格式(如漏掉
[mysqld]
段)会导致容器立即退出,
docker logs mysql-dev
里会显示
unknown variable
或
parse error
字符集相关配置(如
collation-server=utf8mb4_unicode_ci
)必须和
init_connect
配合,否则客户端连接后仍可能用错 编码
[mysqld] max_connections = 200 character-set-server = utf8mb4 collation-server = utf8mb4_unicode_ci init_connect = 'SET NAMES utf8mb4'
数据卷权限错误:container_ linux .go:349: starting container process caused: chdir to cwd...no such file or directory 这个错误不是路径不存在,而是宿主机挂载点(如
/data/mysql
)权限不足,MySQL 进程(uid=999)无法写入。 不要用
chmod 777 /data/mysql
—— MySQL 容器启动时会校验目录属主,非
mysql:mysql
(即 uid=999)会拒绝启动 正确做法:宿主机上执行
sudo chown -R 999:999 /data/mysql
(注意是数字 uid,不是用户名) 如果用 Docker Compose,可在 service 下加
user: "999:999"
显式指定运行身份,避免依赖挂载点权限 首次初始化后,目录里会出现
ibdata1
、
mysql
等子目录,此时再改权限也无效,必须清空重来 Docker 里跑 MySQL 最容易卡在权限、用户授权、配置加载顺序这三处,问题现象相似但根因不同,查日志前先确认这三项是否都对得上。

相关文章