Sets up a MySQL connection inside an SSH tunnel. This is practical when you want to reach a database which is only accessible through a webserver. Even if the database server is not located on the webserver itself.
Forked from Grrr Amsterdam's mysql-ssh
sshConfig
should be an object according to thessh2
package.dbConfig
should be an object according to themysql2
package.- Returns a Promise, containing a connection from the
mysql2
package.
Don't forget to .close()
the tunnel connection when you're done querying the database.
const mysqlssh = require("mysql-ssh");
const fs = require("fs");
mysqlssh
.connect(
{
host: "my-ssh-server.org",
user: "me-ssh",
privateKey: fs.readFileSync(process.env.HOME + "/.ssh/id_rsa"),
},
{
host: "my-db-host.com",
user: "me-db",
password: "secret",
database: "my-db-name",
}
)
.then((client) => {
client.query("SELECT * FROM `users`", function (err, results, fields) {
if (err) throw err;
console.log(results);
mysqlssh.close();
});
})
.catch((err) => {
console.log(err);
});