我尝试连接到PlanetScale上的MySQL服务器,但无法连接,因为它需要SSL。
这是他们的文档,但不清楚它说了什么。https://planetscale.com/docs/concepts/secure-connections
以下是连接URL:DATABASE_URL='mysql://co30rXXXXXXX:pscale_pw_XXXXXXX@hoqx01444p30.us-east-4.psdb.cloud/restaurant?ssl={"rejectUnauthorized":true}'
这是我运行yarn run migration-run
时在终端上看到的结果
Yarn运行v1.22.18 $ npx prisma migrate dev从.env中加载的环境变量从prisma/schema中加载的Prisma模式.prisma数据源“db”:MySQL数据库“餐厅”位于“hoqx0XXXXX.us-east-4.psdb.cloud:3306”
错误:迁移引擎错误:未知错误:代码:UNAVAILABLE服务器不允许不安全的连接,客户端必须使用SSL/TLS
error命令失败,退出代码为1。info有关此命令的文档,请访问https://yarnpkg.com/en/docs/cli/run。
是否有人尝试过从localhost上的Node.js连接到PlanetScale DB?我尝试过Stackoverflow的一些其他建议,但似乎不起作用。
2条答案
按热度按时间k75qkfdt1#
?ssl={"rejectUnauthorized":false}&sslcert=/etc/ssl/certs/ca-certificates.crt
在连接链接的末尾添加这些参数后,该问题已得到修复。:)
mnemlml82#
Windows上的SSL问题
如果你在Windows机器上工作,并使用
.env
文件作为连接字符串,下面是我在本地运行的方法(windows没有默认的/etc/ssl/certs/
引用as answered here)。您可以通过“概述”〉“连接”从PlanetScale控制台获取连接字符串
这将类似于:
当简单地使用这个时,你很可能会得到下面的错误信息(如问题所述):
因此,您需要提供一个本地证书,可以从以下受信任的位置下载一个:
接下来,您需要将此文件保存到磁盘上的一个逻辑位置,该位置可以在连接字符串中引用,例如
c:/temp/cacert.pem
保存后,您可以将then后面的内容追加到连接字符串中:
重新启动您的服务器,您应该都设置好了!🎉
NodeJs
中的等效ssl证书更新如下所示: