Run a query on MySQL via SSH tunnel
@dylburger
code:
data:privatelast updated:1 year ago
today
Build integrations remarkably fast!
You're viewing a public workflow template.
Sign up to customize, add steps, modify code and more.
Join 800,000+ developers using the Pipedream platform
steps.
trigger
HTTP API
Deploy to generate unique URL
This workflow runs on Pipedream's servers and is triggered by HTTP / Webhook requests.
steps.
run_mysql_query_through_ssh_tunnel
auth
to use OAuth tokens and API keys in code via theauths object
(auths.mysql)
(auths.ssh_password_based_auth)
code
Write any Node.jscodeand use anynpm package. You can alsoexport datafor use in later steps via return or this.key = 'value', pass input data to your code viaparams, and maintain state across executions with$checkpoint.
async (event, steps, auths) => {
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
}
31
const mysql = require('mysql2/promise')
const SSH2Promise = require('ssh2-promise')

const { host, username, privateKey } = auths.ssh_password_based_auth

const ssh = new SSH2Promise({
  host,
  username,
  privateKey,
})

const tunnel = await ssh.addTunnel({
  remoteAddr: auths.mysql.host, 
  remotePort: auths.mysql.port,
})

const connection = await mysql.createConnection({
  host: 'localhost', 
  port: tunnel.localPort, // local tunnel port
  user: auths.mysql.username, 
  password: auths.mysql.password,
  database: auths.mysql.database,
});

const [rows, fields] = await connection.execute("SELECT NOW()")
console.log(rows)

await connection.end()
await ssh.close()