簡體   English   中英

如何使用 SSL 從本地主機上的 node.js 連接到運行在 PlanetScale 上的 MySQL 數據庫服務器?

[英]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 上的 SSL 問題

如果您在 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM