PlanetScaleDb Prisma 设置 - 服务器不允许不安全的连接,客户端必须使用 SSL/TLS

问题描述 投票:0回答:3

我正在启动一个全新的 PlanetScale 支持的项目,并使用 Prisma 设置。我按照这个官方文档上的说明进行操作(除了更改数据库的名称),在本地代理到数据库后,我发现自己无法运行

npx prisma db push
命令,出现以下错误:

server does not allow insecure connections, client must use SSL/TLS

我对数据库设置非常陌生,在此之前我从来不知道我需要配置任何这些连接,因为我认为它们是作为我正在使用的数据库设置的一部分来处理的。

我知道我通过 Prisma 使用的 mySql 在对数据库执行任何交互之前需要 SSL 或 TLS,但我还没有找到任何方法来为我的环境进行设置。

我看到有人提到将

?tls={true}
添加到我的
DATABASE_URL
的末尾,但这没有任何作用。此外,鉴于所提供的
DATABASE_URL
是由 PlanetScale 提供为

DATABASE_URL='mysql://un5pbmobnc73muwvbo77:************@us-east.connect.psdb.cloud/*******?ssl={"rejectUnauthorized":true}'

我尝试将

{"rejectUnauthorized":true}
更改为
{"rejectUnauthorized":false}
。这也没有改变什么。 涉及对象的更复杂的解决方案是导致我的数据库完全找不到的参数。

我知道 SSL 已被弃用,我不应该使用它,但我不仅不知道如何正确地将 TLS 添加到我的 mySQL,而且正如您可能已经确定的那样,我发现自己有些无法完全掌握这个概念它的实施完全。

mysql tls1.2 prisma planetscale
3个回答
11
投票

?ssl={"rejectUnauthorized":true}
替换为
?sslaccept=strict
。下面是一个例子。

DATABASE_URL="mysql://xxxx:[email protected]/zzzz?sslaccept=strict"

详情写在下面。

https://www.prisma.io/docs/concepts/database-connectors/mysql#arguments

祝你好运!


0
投票

对于 Laravel 应用程序,您的“.env”文件应如下所示:

  • DB_CONNECTION=mysql
  • DB_HOST=XXXX
  • DB_PORT=XXXX
  • DB_DATABASE=XXXX
  • DB_USERNAME=XXXX
  • DB_PASSWORD=XXXX
  • MYSQL_ATTR_SSL_CA=XXXX

注意:您可以按照以下步骤从您的 Planetscale 帐户获取这些凭据:

  1. 单击您想要获取凭据的数据库。
  2. 单击“概述”菜单选项。
  3. 单击右下角的“获取连接字符串”。
  4. 从“连接方式”下拉选项中,选择“Laravel”。
  5. 将所选选项中的凭据复制并粘贴到您的 “.env”文件。
  6. 运行“php artisan optimize:clear”命令就可以了。

恭喜!


0
投票

DATABASE_URL='mysql://un5pbmobnc73muwvbo77:*****@us-east.connect.psdb.cloud/?ssl={"rejectUnauthorized":true}&&sslaccept=strict'

© www.soinside.com 2019 - 2024. All rights reserved.