Docker Compose 安装 MySQL 8

编写docker-compose.yml( 外部可访问)

yaml 复制代码
services:
  mysql:
    image: mysql:8.0
    container_name: mysql8
    restart: always  # 服务器/MySQL挂了自动重启
    environment:
      MYSQL_ROOT_PASSWORD: Rt173465.     # ROOT账户密码
      MYSQL_ROOT_HOST: '%'               # 允许外部连接 root
      TZ: Asia/Shanghai                  # 时区
      MYSQL_CHARSET: utf8mb4             # 字符集
      MYSQL_COLLATION: utf8mb4_unicode_ci
    ports:
      - "3306:3306"  # 端口映射
    # 推荐写法:相对路径,自动在当前目录创建 data, conf, logs
    volumes:
      - ./data:/var/lib/mysql
      - ./conf:/etc/mysql/conf.d
      - ./logs:/var/log/mysql
    command:
      --default-authentication-plugin=mysql_native_password
      --character-set-server=utf8mb4
      --collation-server=utf8mb4_unicode_ci
      --ngram_token_size=2  # 设置 ngram 分词长度为 2(中文双字词)
      --innodb_ft_min_token_size=2  # 支持2字符的查询(解决「读了」长度不足问题)
      --innodb_ft_server_stopword_table = '' # 禁用停用词(避免「读了」被过滤)

1. 进入目录

bash 复制代码
cd /home/lishengli/docker-compose/mysql

2. 启动

bash 复制代码
docker-compose up -d

连接信息(外部工具直接用)

  • 主机:你的服务器IP
  • 端口:3306
  • 用户名:root
  • 密码:root123456(你自己改)
  • 权限:外部任何IP都能连

常用命令

bash 复制代码
# 启动
docker-compose up -d

# 停止
docker-compose stop

# 重启
docker-compose restart

# 删除容器(数据不丢)
docker-compose down

# 查看日志
docker-compose logs -f mysql

总结

  1. 目录完全匹配你的路径
  2. root 账号支持外部连接
  3. mysql:8.0 = 最新稳定版
  4. 数据、配置、日志全部持久化
相关推荐
夜雪一千7 小时前
MySQL 全局锁是什么?原理、风险、备份踩坑完整实战
android·mysql·adb
万里侯9 小时前
GitOps 2026年演进趋势:从配置管理到环境即代码的范式转移及Pull vs Push模型的再思考
微服务·容器·k8s
acd120099 小时前
一次线上OOM排查实录:从jmap到代码重构,我踩过的坑全在这了
容器·重构·kubernetes
吕海洋10 小时前
目前可用的docker源2026.08
运维·docker·容器
程序员夏洛11 小时前
MySQL 中 count(*)、count(1) 和 count(字段名) 有什么区别?
数据库·mysql
l12586512 小时前
# RAG向量数据库优化实战:HNSW索引调参与生产级性能设计
数据库·python·mysql·langchain
梦Arrebol12 小时前
Mysql内容及相关实验
数据库·mysql
gsls20080813 小时前
Penpot Docker 部署与 MCP 服务配置文档
运维·docker·容器·原型·penpot
OceanWaves199313 小时前
mysql 8.0.32 磁盘爆满,清理从库日志
数据库·mysql
天蓝不会忘记0213 小时前
k8s集群部署的方法原理
云原生·容器·kubernetes