详情

首页手游攻略 Docker部署远程MySQL从端口踩坑到权限全开完整步骤(附避坑指南)实用指南

Docker部署远程MySQL从端口踩坑到权限全开完整步骤(附避坑指南)实用指南

佚名 2026-09-08 18:20:01

平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Docker部署远程MySQL从端口踩坑到权限全开完整步骤(附避坑指南)”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。

目录
  • 一、部署环境与核心工具
  • 二、基础部署流程:三步走方案
    • 1. 目录隔离与 Docker Compose 设置
    • 2. 一键启动服务
  • 三、血泪避坑指南:解决“连不上”的三个死理
    • 坑位 1:Connection timed out
    • 坑位 2:误把容器名当用户名
    • 坑位 3:MySQL 8.0 的权限与加密限制
  • 总结

    一、部署环境与核心工具

    • 服务器:阿里云轻量应用服务器(Ubuntu/CentOS 均可)
    • 核心技术:Docker + Docker Compose
    • 数据库版本:MySQL 8.0
    • 本地连接工具:DataGrip

    二、基础部署流程:三步走方案

    1. 目录隔离与 Docker Compose 设置

    version: '3.8'
    services:
      new-db:
        image: mysql:8.0
        container_name: xxx-db # 容器名称
        restart: always
        environment:
          MYSQL_ROOT_PASSWORD: xxx # root用户密码
          MYSQL_DATABASE:xxx_db # 自动创建的数据库名
        ports:
          - "3307:3306" # 关键!宿主机端口:容器端口
        volumes:
          - ./mysql_data:/var/lib/mysql # 数据持久化挂载

    核心设置解析:

    端口映射 3307:3306:外部连接必须采用宿主机端口(本处如果是3307记得改因为3306就是 MySQL 数据库的“官方出厂默认端口”如果改了宿主机端口记得改)

    持久化挂载:避免容器删除后数据丢失

    2. 一键启动服务

    docker compose up -d

    三、血泪避坑指南:解决“连不上”的三个死理

    坑位 1:Connection timed out

    症状

    DataGrip 提示 [28000][1045] Connection timed out: connect

    原因

    云服务器安全组默认拦截非标准端口(如 3307)

    解决方案

    登录云服务器控制台
    在安全组中添加入方向规则:
    协议:TCP
    端口范围:3307
    授权对象:0.0.0.0/0(生产环境建议限制 IP)

    坑位 2:误把容器名当用户名

    症状

    Access denied for user ‘resumer-db’@‘xxx’

    原因

    混淆了容器名(xxx-db)与数据库用户名(root)

    解决方案

    在连接工具中填写:

    User: root
    Password: xxx(即 MYSQL_ROOT_PASSWORD 的值)

    坑位 3:MySQL 8.0 的权限与加密限制

    症状

    Access denied for user ‘root’@‘你的IP’ (using password: YES)

    原因

    权限限制:root 默认仅允许 localhost 访问

    加密冲突:MySQL 8.0 默认采用 caching_sha2_password,旧客户端不兼容

    解决方案:

    docker exec -it resumer-db mysql -uroot -proot -e 
    "ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY 'root';
    GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION;
    FLUSH PRIVILEGES;"

    命令解析

    修改 root 用户加密方式为 mysql_native_password

    授权所有 IP(%)访问

    立即刷新权限

    连不上 → 查云服务器安全组
    账号错误 → 确认采用 root 而非容器名
    密码错误 → 解决 MySQL 8.0 权限与加密问题
    理清这三点,从此告别数据库连接报错!

    总结

    到此这篇关于Docker部署远程MySQL从端口踩坑到权限全开的文章就介绍到这了,更多相关Docker部署远程MySQL内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多兼容脚本之家!

    您可能感兴趣的文章:

    • Docker安装MySQL及授权远程访问的详细教程
    • docker部署mysql 实现远程连接的示例
    • Docker部署mysql远程连接 解决2003的问题
    • docker部署mysql8并设置可远程连接
    • Docker 安装 MySQL 并实现远程连接教程
    • Docker Desktop中安装MySQL同时开启远程访问的详细教程
    • Docker安装MySql8并远程访问的实现
    • docker轻松安装部署mysql并设置远程连接

    相关资讯
    点击查看更多
    游戏推荐
    推荐专题
    热门阅读
    推荐下载