今までNext.jsのapi内で、
「serverless-mysql→レンタルVPS内のDBサーバーと接続」
としていたのですが、
昨今流行りの「planetscale」を使ってみたくなりました。
接続にあたって今までと方法が少し異なっていて、数時間悩んだので、
誰かの為に書き残しておきます。
↓今までの接続方法
const db = mysql({
config: {
host: process.env.MYSQL_HOST,
database: process.env.MYSQL_DATABASE,
user: process.env.MYSQL_USER,
password: process.env.MYSQL_PASSWORD,
},
});
planetscaleのDB内のconnectというところを押して、以下のような情報を確認します。
database: ************
username: ************
host: ************
password: ************
「まぁここ書き換えただけで上手くいくだろう」と高を括っていましたが、
うまくいきませんでした。
理由がよく分からなかったので、「DBクライアントからなら繋がるのか??」と思い、
DBeaverから試してみますが、こちらも繋がらず。
ただ、エラーメッセージとして、
server does not allow insecure connections, client must use SSL/TLS
こんなメッセージが出ました。
ということで、DBeaverのSSLタブの設定等をごちゃごちゃ触っていたのですが、結論としては、
ここのsslModeという項目を許可してあげると接続できました。
ここから着想を得まして、serverless-mysql側も、
const db = mysql({
config: {
host: process.env.PS_HOST,
database: process.env.PS_DATABASE,
user: process.env.PS_USER,
password: process.env.PS_PASSWORD,
ssl: true,
},
});
「ssl: true」としてあげることで上手く接続することができました。
通信系の知識強い人はこういうの迷わないんですかね。。
つよくなりたい。。!