我試圖將作爲Docker容器在我們的Kubernetes集羣(託管在Google Container Engine上)運行的服務器代碼連接到Google Cloud SQL託管的MySQL 5.7實例。我遇到的問題是每個連接都被數據庫服務器以Access denied for user 'USER'@'IP' (using password: YES)
拒絕。數據庫證書(用戶名,密碼,數據庫名稱和SSL證書)在通過其他MySQL客戶端連接或與本地實例上的容器相同的應用程序進行連接時都是正確的。集裝箱式服務器應用程序無法連接到MySQL數據庫
我已驗證所有憑據在應用程序的本地和服務器託管版本上都是相同的,並且我正在連接的用戶具有指定的通配符%
主機。真的不知道該怎麼勾選這裏,說實話......
連接代碼的編輯版本低於:
let connectionCreds = {
host: Config.SQL.HOST,
user: Config.SQL.USER,
password: Config.SQL.PASSWORD,
database: Config.SQL.DATABASE,
charset: 'utf8mb4',
};
if (Config.SQL.SSL_ENABLE) {
connectionCreds['ssl'] = {
key: fs.readFileSync(Config.SQL.SSL_CLIENT_KEY_PATH),
cert: fs.readFileSync(Config.SQL.SSL_CLIENT_CERT_PATH),
ca: fs.readFileSync(Config.SQL.SSL_SERVER_CA_PATH)
}
}
this.connection = MySQL.createConnection(connectionCreds);
附加信息:服務器應用程序使用mysql2庫建於節點連接到數據庫。沒有特定的防火牆規則可以引發網絡問題,這一點由庫連接但未通過身份驗證確認。
如果您確定防火牆和端口已在您的安全組中啓用,那麼代碼中存在問題可能在參數中。如果您分享你的連接代碼 – Adiii
@Adiii我已經添加了上面的連接代碼以防萬一它有幫助 – moberemk