我试图连接到MySQL服务器上的PlanetScale,但不能,因为它需要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时从终端看到的情况
纱运行v1.22.18 $ npx迁移从.env prisma模式加载的dev环境变量,从Prisma /schema.prma Datasource "db":MySQL数据库“MySQL”在"hoqx0XXXXX.us-east-4.psdb.cloud:3306“
错误:迁移引擎错误:未知错误:代码:不可用服务器不允许不安全的连接,客户端必须使用SSL/TLS
错误命令失败,退出代码1.info访问https://yarnpkg.com/en/docs/cli/run获取有关此命令的文档。
是否有人试图从本地主机上的PlanetScale连接到Node.js DB?我尝试过Stackoverflow的其他一些建议,但似乎行不通。
发布于 2022-08-29 10:56:52
?ssl={"rejectUnauthorized":false}&sslcert=/etc/ssl/certs/ca-certificates.crt
将这些参数添加到连接链接的末尾,问题已经得到解决。:)
发布于 2022-10-16 16:49:58
WINDOWS上的SSL问题
如果您使用的是Windows机器,并使用.env文件作为连接字符串,下面是我在本地运行的方法(windows没有默认的/etc/ssl/certs/引用as answered here)。
通过“概述”>“连接”从PlanetScale控制台获取连接字符串
这看起来像:
DATABASE_URL='mysql://xxxxxx:*****@aws-eu-west-1.connect.psdb.cloud/dbName?ssl={"rejectUnauthorized":true}'当简单地使用此方法时,您将得到以下错误消息(如问题所述):
Code: UNAVAILABLE server does not allow insecure connections, client must use SSL/TLS因此,您需要提供本地证书,可以从以下受信任的位置下载证书:
接下来,您需要将此文件保存到磁盘上可以在连接字符串(例如c:/temp/cacert.pem )中引用的逻辑位置。
保存完后,就可以将其追加到连接字符串中:
&sslcert=C:\\temp\\cacert.pem重新启动您的服务器,您应该都设置好了!
NodeJs中相同的ssl证书更新如下:
const connection = mysql.createConnection({
host: 'hostNameHere',
user: 'userNameHere',
password: 'passwordHere',
database: 'dbHere',
ssl: {
ca: fs.readFileSync('C:\\temp\\cacert.pem')
}
});https://stackoverflow.com/questions/73455318
复制相似问题