Symfoware

Symfowareについての考察blog

java 8 jjsスクリプト sshトンネルを経由し、MariaDBのデータを取得する

java8から搭載されたjjsスクリプトを試しています。
OpenJDK 8 jjsコマンドでJavaScriptを実行する


SSHトンネルを経由してデータベースに接続できることを知りました。
HeidiSQL SSH tunnel経由でMySQL(MariaDB)に接続する

jjsスクリプトでデータベースに接続する方法もわかりました。
java 8 jjsスクリプト JDBCドライバを使用してデータベースに接続する


これらを踏まえ、jjsスクリプトを使用し、sshトンネル経由でMariaDBのデータを取得してみます。
こちらを参考にさせていただきました。
JDBCでSSHトンネルを経由してMySQLに接続する方法



jsch



javaでssh接続を行うには、jschを使用するのが良さそうです。
http://www.jcraft.com/jsch/

jsch-0.1.54.jarをダウンロードしました。

726_01.png


jsch-0.1.54.jarをこれから作成するjjsスクリプトと同じ階層にコピーしておきます。





サンプル




ホスト:192.168.1.103

sshユーザー:sshuser
sshパスワード:sshuser123
sshポート:22

データベースユーザー:root
データベースパスワード:P@ssw0rd
データベース名:sample
テーブル:test




上記の条件で接続してみます。

・sample.js


  1. var jsch = new com.jcraft.jsch.JSch()
  2. // ユーザー、サーバー名、ポートを指定
  3. var session = jsch.getSession('sshuser', '192.168.1.103', 22)
  4. // ssh接続のパスワードを指定
  5. session.setPassword('sshuser123')
  6. var config = new java.util.Properties()
  7. config.put("StrictHostKeyChecking", "no")
  8. session.setConfig(config)
  9. session.connect()
  10. // 3307 <-> 3036でsshトンネルを生成
  11. var remoteHost = "127.0.0.1"
  12. var localPort = 3307
  13. var remotePort = 3306
  14. session.setPortForwardingL(localPort, remoteHost, remotePort)
  15. // データベース接続
  16. var prop = new java.util.Properties()
  17. prop.setProperty('user', 'root')
  18. prop.setProperty('password', 'P@ssw0rd')
  19. // ポート番号の指定は「3307」であることに注意
  20. var url = "jdbc:mariadb://localhost:3307/sample"
  21. var driver = new org.mariadb.jdbc.Driver()
  22. var con = driver.connect(url, prop)
  23. var stmt = con.createStatement()
  24. var rs = stmt.executeQuery('select * from test')
  25. while(rs.next()){
  26.     print(rs.getInt('id') + ':' + rs.getString('item'))
  27. }
  28. session.disconnect()
  29. print('ok')





JDBCドライバーとjschのクラスパスを指定して実行。


$ jjs -cp mariadb-java-client-1.5.6.jar:jsch-0.1.54.jar sample.js
1:test1
2:test2
3:test3
4:test4
5:test5
ok




ちゃんとsshトンネル経由でデータベースに接続できたようです。



【参考URL】

JDBCでSSHトンネルを経由してMySQLに接続する方法

HeidiSQL SSH tunnel経由でMySQL(MariaDB)に接続する

java 8 jjsスクリプト JDBCドライバを使用してデータベースに接続する

関連記事

テーマ:プログラミング - ジャンル:コンピュータ

  1. 2017/01/15(日) 22:01:31|
  2. Java
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Debian 8.7(Jessie)にPostgreSQL 9.6をインストールし、外部接続を許可する | ホーム | java 8 jjsスクリプト http接続とjsonデータのデコード>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1947-f02d820a
この記事にトラックバックする(FC2ブログユーザー)