我使用 Laravel Vapor 进行无服务器部署,使用 Laravel Valet 进行本地开发。我在 Vapor 上选择了一个私有无服务器数据库,并在 Vapor 中创建了一个“jumpbox”,以便在其他应用程序中通过 SSH 与该数据库连接。但是如何连接到 Laravel 应用程序中的数据库进行本地开发呢?当我使用 Valet 查看我的应用程序时,例如“website.test”,我收到连接错误,因为我的数据库连接未在 .env 文件中设置。 Jumpbox 提供了用户名和密码,还提供了 SSH 密钥,但我不知道如何将其包含在我的 .env 文件中,以便可以在本地进行连接。
您可以使用 ssh 创建一个到服务器的本地管道,并将远程数据库端口映射到您的本地端口之一,这样 MySQL 就会看起来像在本地工作,您可以只使用
localhost
和您在 中选择的端口.env
。
您需要搜索如何在您的特定系统中进行映射,但这称为 SSH 端口转发,并且实现起来并不难。
您可以使用 Vapor CLI 工具创建 SSH 隧道。
vapor team:list
vapor team:switch --id 12345
vapor database:list
vapor database:tunnel db-name 33060
mysql --user=vapor --host=127.0.0.1 --port=33060 --password=THEDBPASSWORD -e "USE vapor; SELECT * FROM mytable;"