问下如何用navicate连接远程服务器里面的docker容器里面的mysql

情况是这样的。
我有台服务器是linux,如ip地址是153.153.120.24
然后我在这个linux服务器里面安装了一天docker容器,容器是一个centos系统,我在这个docker容器里面再安装了一个mysql。
现在情况是如何能用我电脑连接容器里面的mysql。
那个linux服务器我用ssh root@153.153.120.24 是能连上的。
然后我在远程服务器上,
用mysql -uroot -p -h172.18.0.3 是能连上那个docker里面的mysql。那个容器地址是172.18.0.3
问下如何用我本地的navicate连接远程服务器上的容器里面的mysql?

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
最佳答案

为啥要连容器ip,不应该连服务器ip吗

1个月前 评论
donggan (楼主) 1个月前
lijizheng (作者) 1个月前
讨论数量: 7

为啥要连容器ip,不应该连服务器ip吗

1个月前 评论
donggan (楼主) 1个月前
lijizheng (作者) 1个月前

把容器的mysql端口映射到宿主机,然后连宿主机的ip+映射的端口

1个月前 评论

你提到的 MySQL 客户端没有通过 SSH 登录的功能吗?我使用 TablePlus,他是支持 Over SSH 连接服务器中的 MySQL 的,如下图:

file

1个月前 评论

你没有把端口映射出来吗?

docker run -itd --name mysql5.6 -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.6

1个月前 评论

看样子你应该把端口映射到宿主机了, 那么远端访问,最好通过隧道。 最简单的方法就是, 在navicat 里右键新建【编辑】连接 常规:按照你在服务器的连接配置去填即可,比如主机 localhost之类的 SSH:

  • 选择使用隧道
  • 主机:就是你远程的主机公网IP
  • 端口:SSH的端口,默认是22
  • 用户名:就是登录服务器的用户名
  • 密码:你的密码

配置图

常规配置图

file

SSH配置图

file

高级配置图

此外防止断线快,最好设置心跳短一点

file

1个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!