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

 更新时间:2026年04月20日 09:15:04   作者:rrrjqy  
MySQL远程连接问题是软件开发与数据库运维过程中极为常见且令人困扰的技术难题,其背后涉及权限控制、网络通信、系统安全策略及容器化部署等多个层面的协同机制,这篇文章主要介绍了Docker部署远程MySQL从端口踩坑到权限全开的相关资料,需要的朋友可以参考下

一、部署环境与核心工具

  • 服务器:阿里云轻量应用服务器(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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java实现插入mysql二进制文件,blob类型,遇到问题及解决办法

    java实现插入mysql二进制文件,blob类型,遇到问题及解决办法

    mysql插入二进制文件,blob类型,遇到问题及解决办法
    2009-06-06
  • SQL Server实现全文搜索查询详解

    SQL Server实现全文搜索查询详解

    这篇文章介绍了SQL Server的全文搜索功能,文中通过示例代码介绍的非常详细。对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-04-04
  • MySQL8.4一主一从环境搭建实现

    MySQL8.4一主一从环境搭建实现

    本文主要介绍了MySQL8.4一主一从环境搭建实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-06-06
  • mysql 安全管理详情

    mysql 安全管理详情

    这篇文章主要介绍了mysql 安全管理,MySQL服务器的安全基础是用户应该对他们需要的数据具有适当的访问权,既不能多也不能少,换句话说,用户不能对过多的数据具有过多的访问权,下面俩看看文章详细内容吧
    2021-10-10
  • Mysql 5.5.56版本(二进制包安装)自定义安装路径步骤记录

    Mysql 5.5.56版本(二进制包安装)自定义安装路径步骤记录

    这篇文章主要介绍了Mysql 5.5.56版本(二进制包安装)自定义安装路径步骤记录,需要的朋友可以参考下
    2017-07-07
  • 验证mysql是否安装成功的方法

    验证mysql是否安装成功的方法

    在本篇文章里小编给大家分享的是关于验证mysql是否安装成功的方法,需要的朋友们可以学习下。
    2020-06-06
  • MySQL 5.7并发复制隐式bug实例分析

    MySQL 5.7并发复制隐式bug实例分析

    这篇文章主要给大家介绍了关于MySQL 5.7并发复制隐式bug的相关资料,文中介绍的非常详细,对大家学习或者使用mysql5.7具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-11-11
  • MySQL数据库常用操作技巧总结

    MySQL数据库常用操作技巧总结

    这篇文章主要介绍了MySQL数据库常用操作技巧,结合实例形式总结分析了mysql查询、存储过程、字符串截取、时间、排序等常用操作技巧,需要的朋友可以参考下
    2018-03-03
  • 一篇文章带你轻松了解MySQL之事务的简介

    一篇文章带你轻松了解MySQL之事务的简介

    事务可以由一条非常简单的SQL语句组成,也可以由一组复杂的SQL语句组成,事务的目的是将数据库从一种一致性状态转换为另一种一致性状态,下面这篇文章主要给大家介绍了关于MySQL事务简介的相关资料,需要的朋友可以参考下
    2023-06-06
  • 详解Mysql中的JSON系列操作函数

    详解Mysql中的JSON系列操作函数

    新版 Mysql 中加入了对 JSON Document 的支持,可以创建 JSON 类型的字段,并有一套函数支持对JSON的查询、修改等操作,下面就实际体验一下
    2016-07-07

最新评论