DDEV 通过 SSH 隧道从登台服务器连接到 MySQL 数据库返回:无法分配请求的地址

问题描述

我正在 DDEV 环境中本地开发一个 TYPO3 项目。所有开发人员都希望访问同一个 MysqL 数据库。我们希望通过到登台服务器的 SSH 隧道来实现这一点。不幸的是,我无法从 DDEV 建立到数据库的 SSH 隧道。

我该怎么办?

ddev exec ssh -v -L 3306:127.0.0.1:3306 customer@stage.customer.tld

发生的错误

debug1: Local forwarding listening on ::1 port 3306.
bind [::1]:3306: Cannot assign requested address

还有其他端口,总是同样的错误。我必须在 DDEV 中设置什么才能使其工作?

感谢您的支持

解决方法

问题解决了。

我所要做的就是切换到一个空闲端口,就我而言:3308

所以这段代码工作正常:

<div *ngIf="data$ | loadingPipe | async> </div>

感谢您的帮助!

,

正如上面的评论,我知道没有理由使用隧道而不是直接访问目标服务器。

但如果必须的话,答案在 https://www.electricmonk.nl/log/2014/09/24/ssh-port-forwarding-bind-cannot-assign-requested-address/ - 你需要使用 ssh -4 -L 3306:127.0.0.1:3306 customer@stage.customer.tld

请注意,在 ddev 中,mariadb/mysql 服务器并未在 Web 容器内运行,它是一个单独的容器,因此无论如何将隧道放在 Web 容器中的 3306 上可能是错误的。除了不需要隧道。

此外,sshd(在您的服务器上)默认情况下不允许这种隧道,您必须在服务器上启用 AllowTcpForwarding。