質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Q&A

解決済

1回答

3735閲覧

Springから仮想サーバーのMySQLに繋ぎたい

misskabu

総合スコア28

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Spring

Spring Framework は、Javaプラットフォーム向けのオープンソースアプリケーションフレームワークです。 Java Platform上に、 Web ベースのアプリケーションを設計するための拡張機能が数多く用意されています。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

0グッド

0クリップ

投稿2019/06/11 06:59

前提・実現したいこと

仮想サーバー(VirtualBox + CentOS)の中にあるMySQLのテーブルにJava(Spring boot)から接続したい。

発生している問題・エラーメッセージ

プロジェクトを実行しようとすると以下のメッセージが出て接続できません。
全文を掲載しようとしたのですが、とてつもなく長いログのため、teratailに投稿を拒否されましたので重要そうな部分を抜き出しています。
どなたかご教授いただけると幸いです。

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure (中略) org.springframework.jdbc.support.MetaDataAccessException: Could not get Connection for extracting meta-data; nested exception is org.springframework.jdbc.CannotGetJdbcConnectionException: Failed to obtain JDBC Connection; nested exception is com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure (中略) The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.

該当のソースコード

buid.gradle

json

1plugins { 2 id 'org.springframework.boot' version '2.1.5.RELEASE' 3 id 'java' 4} 5 6apply plugin: 'io.spring.dependency-management' 7 8group = 'com.kenta' 9version = '0.0.1-SNAPSHOT' 10sourceCompatibility = '1.8' 11 12repositories { 13 mavenCentral() 14} 15 16dependencies { 17 implementation 'org.springframework.boot:spring-boot-starter-web' 18 testImplementation 'org.springframework.boot:spring-boot-starter-test' 19 compile('org.springframework.boot:spring-boot-starter-thymeleaf') 20 compile('org.springframework.boot:spring-boot-starter-data-jpa') 21 compile ('org.springframework.boot:spring-boot-starter-web') 22 compile 'org.springframework.boot:spring-boot-starter-jdbc' 23 compile 'mysql:mysql-connector-java:5.1.35' 24 compile 'com.jcraft:jsch:0.1.53' 25}

application.properties
(??????はMySqlのユーザー名とパスワード)

spring.jpa.open-in-view=true logging.file=logs/myapp.log logging.level.org.springframework.web=INFO spring.datasource.url=jdbc:mysql://127.0.0.1:3306/${student_directory} spring.datasource.username=${??????} spring.datasource.password=${??????} spring.datasource.driver-class-name=com.mysql.jdbc.Driver
データーベース名テーブル名
student_directoryM_student

試したこと

エラーメッセージをコピーしてGoogleで調べたところDB名を間違えていないかという指摘をされている方がおりましたので、
terminalから仮想サーバーにログインして確認しました。ですが、このユーザー名とパスワードでterminalからMySQLの該当テーブルを操作することは出来ましたのでテーブルは存在し、操作権限もgrant all で付与できている事を確認済みです。
また、サーバーサイドDBを使わず組み込みメモリ型データベースのH2databaseでは読み書きできる状態です。
他のサイトを参考に見よう見まねで修正しておりましたが手詰まりになりました。

補足情報(FW/ツールのバージョンなど)

OS:macOS
仮想サーバー:VirtualBox,CentOS6
仮想サーバーの構築にはvagrantを使用。
DB:MySQL
IDE:STS(eclipse)
言語:java8,Spring FrameWork

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/06/11 10:10

環境変数などに設定してないからdbに接続されてないのでは?
misskabu

2019/06/11 11:34

コメントありがとうございます。 私もそうかと思って質問させていただいたのですが、 引き続き調べていたところ、どうもJavaコードの方に問題があるようなので一度出直します。 糸口になりそうなものは見えたものの未解決のため、違う形でまた質問させて頂くかもしれません。
guest

回答1

0

自己解決

https://qiita.com/Yuki10/items/aa999ebc36610b69a910
上のリンクにコンソールアプリで接続しているサンプルがあったので、テスト用に新規プロジェクトを立ち上げてコピーしてテーブル名だけ自分の環境に合わせてみたところMySQLとの接続を確認できました。

main()メソッドからかなり特殊でどこをどう使えばいいのかさっぱり分かりませんが、JAVAからSSHに接続するためのユーザー名とパスワードをJSchクラスに渡してそのインスタンスから接続するようです。

自分のコードと全く違うため一旦質問を閉じてやれるだけ解析して取り込んでみます。

投稿2019/06/11 11:35

misskabu

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問