How can I connect to remote MySQL database through SSH from java application. Small code example is helpful for me and I'd appreciate this.
相关问题
- Delete Messages from a Topic in Apache Kafka
- Jackson Deserialization not calling deserialize on
- How to maintain order of key-value in DataFrame sa
- StackExchange API - Deserialize Date in JSON Respo
- Difference between Types.INTEGER and Types.NULL in
My understanding is that you want to access a mysql server running on a remote machine and listening on let's say port 3306 through a SSH tunnel.
To create such a tunnel from port 1234 on your local machine to port 3306 on a remote machine using the command line ssh client, you would type the following command from your local machine:
To do the same thing from Java, you could use JSch, a Java implementation of SSH2. From its website:
For an example, have a look at
PortForwardingL.java
. Once the session connected, create your JDBC connection to MySQL using something likejdbc:mysql://localhost:1234/[database]
as connection URL.My detail code is below:
First of all, thank you works great!
Though, I wonder if I should reuse that Session for every (potentially simultaneous) SQL Connection, or if I should create a new Session every time and only refresh it if for some reason it has expired.
Currently, I would every time I make a connection make a new instance of that Controller here and then do the SQL queries with the connection I got from it, then close it manually.
Would also be nice if I could make the class useable with try-with-resource and it closing itself. Will look into that. Cause I don´t wanna miss closing it.
That´s how the thing looks like, I'm getting DB Connections from right now.
If you wonder DbSettingsController I´ve made myself too, just puts settings in a Text column in a local SQLite DB, with a key assigned to it (that enum´s int value). Was just copy paste code I reused from some other project, so it was simple and fast to just do that this way.