如何将Dokku MySQL连接至Sequel Ace/Pro等数据库GUI工具
Dokku 内部 MySQL 连接 Sequel Ace/Pro 实操方案
Dokku 官方 MySQL 插件部署的数据库默认仅绑定内部 Docker 网络,不直接暴露公网端口,按以下步骤操作即可完成连接,全程不需要修改数据库公网暴露规则,安全无风险。
第一步:获取准确的数据库连接凭证
因为你的 Laravel 应用已经正常关联运行,直接从应用环境变量读参数是最准的,不会搞错服务对应关系,在 Dokku 宿主机上执行以下命令即可拿到核心参数:
- 查数据库用户名:
dokku config:get <你的Laravel应用名> DB_USERNAME - 查数据库密码:
dokku config:get <你的Laravel应用名> DB_PASSWORD - 查数据库名:
dokku config:get <你的Laravel应用名> DB_DATABASE
如果要核对MySQL服务的底层信息,可以先执行dokku mysql:list确认你创建的MySQL服务名,再执行dokku mysql:info <你的MySQL服务名>查看服务的内部IP、运行状态等信息。
第二步:Sequel Ace/Pro 连接配置(推荐SSH隧道模式)
Sequel 系列数据库工具原生支持SSH隧道连接,不需要额外在服务器上开端口、改防火墙规则,是官方推荐的连接方式,配置分两块填写:
常规连接参数
- 主机(Host):
127.0.0.1 - 端口(Port):
3306 - 用户名:第一步查到的DB_USERNAME值
- 密码:第一步查到的DB_PASSWORD值
- 数据库:第一步查到的DB_DATABASE值
SSH隧道参数
勾选「使用SSH隧道」选项后填写:
- SSH主机:你的Dokku宿主机公网IP,SSH端口默认填22,如果你自定义过服务器SSH端口就填实际端口
- SSH用户:
dokku(Dokku默认的管理用户,具备Docker网络访问权限,不要填root) - SSH认证:填你平时登录Dokku服务器、执行dokku命令用的SSH私钥即可,和你日常部署用的SSH凭证一致
填完直接点连接就能正常访问。
不推荐把MySQL容器的3306端口直接映射到公网,会面临持续的暴力破解风险,存在拖库隐患。
如果遇到工具自带SSH隧道兼容问题,可以手动在本地终端执行端口转发命令:ssh -fNL 3306:<MySQL服务内部IP>:3306 dokku@<你的Dokku宿主机公网IP>
命令里的MySQL服务内部IP从dokku mysql:info的输出结果里取,执行成功后本地3306端口会直接映射到Dokku内部的MySQL服务,此时GUI工具不需要配置SSH参数,直接连127.0.0.1:3306即可。
常见问题排查
- 直连宿主机IP超时:属于正常情况,因为Dokku的MySQL默认不监听公网网卡,必须走隧道
- 连接报权限错误:核对你取的用户名、密码、库名是否和Laravel应用环境变量完全一致,不要默认用root账号连接,Dokku MySQL插件默认不会创建对外可访问的root账号
- SSH连接失败:检查dokku用户是否在你服务器的SSH允许登录列表里,本地私钥是否对应服务器上的authorized_keys配置
内容的提问来源于stack exchange,提问作者Cornelius van Erkelens
相关产品推荐
相关产品推荐

