[英]How do I connect to a MySQL database server running on PlanetScale with SSL from node.js on localhost?
我正在嘗試連接到 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 run v1.22.18 $ npx prisma migrate dev 從 .env 加載的環境變量 從 prisma/schema.prisma 加載的 Prisma 模式數據源“db”:位於“hoqx0XXXXX.us-east-4.psdb.cloud:3306”的 MySQL 數據庫“restaurant” “
錯誤:遷移引擎錯誤:未知錯誤:代碼:UNAVAILABLE 服務器不允許不安全的連接,客戶端必須使用 SSL/TLS
error 命令失敗,退出代碼為 1。 info 請訪問https://yarnpkg.com/en/docs/cli/run以獲取有關此命令的文檔。
是否有人嘗試從本地主機上的 Node.js 連接到 PlanetScale DB? 我嘗試了 Stackoverflow 的其他一些建議,但似乎沒有用。
?ssl={"rejectUnauthorized":false}&sslcert=/etc/ssl/certs/ca-certificates.crt
在連接鏈接末尾添加這些參數,問題已得到修復。 :)
如果您在 Windows 機器上工作並為您的連接字符串使用.env
文件,這就是我在本地運行的方法(Windows 沒有默認的/etc/ssl/certs/
參考,如此處回答)。
您可以通過“概覽”>“連接”從 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
保存后,您可以將 then following 附加到您的連接字符串:
&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')
}
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.