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

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

ただいまの
回答率

90.50%

  • Java

    13794questions

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

  • MySQL

    5856questions

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

  • Eclipse

    1660questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。

eclipseで別のPCのMysqlサーバへの接続

受付中

回答 4

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 505

tohokukagaku

score 0

 前提・実現したいこと

eclipse neon4.6を使用しています
別のPCのMysqlにアクセスしようとすると次のようなエラーが出てしまいます。
どのようにすれば解決できますか?

MysqlサーバのあるPCでは問題なく処理できています。

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

Thu Jul 26 11:54:42 JST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test'
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:425)
at com.mysql.jdbc.Util.getInstance(Util.java:408)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:944)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3973)
at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3909)
at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2527)
at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2680)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2480)
at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2438)
at com.mysql.jdbc.StatementImpl.executeQuery(StatementImpl.java:1381)
at test.TestSql.main(TestSql.java:25)

 該当のソースコード

package test;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class TestSql {

public static void main(String[] args) {
String url = "jdbc:mysql://PCのID:3306/データベース名?autoReconnect=true&useSSL=false";
String user = "mysql";
String pass = "パスワード";
String sql = "SELECT * FROM 商品表";
String com = "";

try{

Class.forName("com.mysql.jdbc.NonRegisteringDriver");

Connection conn = (Connection)DriverManager.getConnection(url,user,pass);
Statement stmt = conn.createStatement();
ResultSet rs =  stmt.executeQuery(sql);
rs.next();
com = rs.getString("短縮名");
System.out.println(com);

rs.close();
stmt.close();
conn.close();
System.out.print("成功");

} catch (Exception e) {
System.out.println("JDBCドライバのロードに失敗しました。");
}
}

}

 試したこと

データベース名の後の ?autoReconnect=true&useSSL=false" を削除しても同じエラーが出ました。
Class.forName("com.mysql.jdbc.NonRegisteringDriver"); を削除しても同じエラーが出ました。

eclipseのプラグインのDBViewerからは接続できましたが、
コードからだとエラーが出てしまうようです。

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

eclipse neon4.6
mysql5.7

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+2

2点ご確認ください。

 接続先のデータベース

エラーメッセージに"Unknown database "と出ているので接続先データベースが見つかっていないように思います。
jdbc urlに指定しているデータベース名は正しいでしょうか?

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test'

もし、ローカルPCにmysqlかmysql clientがインストールされている場合、次のコマンドでアクセスできるかご確認ください。

> mysql.exe --host=接続先ホスト名 --port=3306 --user=ユーザー --password=パスワード --database=データベース名

 接続先のホスト名

ご提示されたコードのjdbc urlには"PCのID"と書かれていますが、これは実際のコードでは接続先の”ホスト名”または”ホストのIP”が書かれているということでしょうか?
A5:SQL Mk-2では接続できるとのことですが、このツールのDB接続設定のホスト名の内容と同一でしょうか?

String url = "jdbc:mysql://PCのID:3306/データベース名?autoReconnect=true&useSSL=false";

念のため、コマンドプロンプトからpingで疎通できるかご確認ください。

> ping 接続先のホスト名

それと、ちょっと気になっている点があります。質問文の以下の

別のPCのMysqlにアクセスしようとすると次のようなエラーが出てしまいます。

"別のPC"というのは、チームで開発する際に複数のメンバーで接続する用途のいわゆるサーバータイプのPCでしょうか?
ちょっと気になっただけなので、差支えがあればお答え頂かなくても結構です。

 確認点 (2018/08/08追加)

コメントありがとうございます。ローカルからmysql.exeでは接続できないけど、A5:SQL Mk-2からは接続できるということなので、もう少し状況確認をさせてください。

結果追記 (2018/08/10)

確認点をコメントして頂いたので、見やすいようにそれぞれの項目に結果を追記しました。

 bind_addressとportの確認

MySQL serverが実行されているPC上で、mysql.exeを使ってrootユーザーでログインして次のsqlを実行してください。
このsqlの結果を確認したいと思います。

bind_address

> show variables like '%bind%';

結果追記

bind_address *

1 row in set, 1 warning (0.27 sec)

port

> show variables like '%port%';

結果追記

innodb_support ON
large_files_support ON
port 3306
report_host
report_password
report_port 3306
report_user
require_secure_transport OFF

8 rows in set, 1 warning(0.00 sec)

 netstatでportの確認

MySQL serverが実行されているPC上で、Windowsのnetstatコマンドの結果を確認したいです。
出力結果が長いかもしれませんが"ローカル アドレス"の欄にx.x.x.x:3306のような結果があるか確認してください。この場合の3306は上記で確認したportに読み替えてください。(上記のportの確認結果がたとえば13306だったら、x.x.x.x:13306を確認する、という意味です。)

コマンドプロントを立ち上げ次のコマンドを実行してください。

> netstat -anoptf TCP

下記の例のような行があるかを確認したいです。

アクティブな接続

  プロトコル  ローカル アドレス      外部アドレス           状態            PID      オフロード状態

  TCP         0.0.0.0:3306           0.0.0.0:0              LISTENING       18596       ホスト内

ローカルアドレスに上記の例のような行がある場合、さらにtohokukagakuさんのPCからA5:SQL Mk-2で接続して、再度結果を確認してください。
このときの外部アドレスがどのように変わったか確認したいです。

結果追記

はじめは下記の例と同じ内容が行がありました(PIDのみ違う数字)
A5:SQL Mk-2に接続後も変わらず同じ数字で存在しましたが、新しく下記の行が増えました。(pidとオフロード状態は同じ数字でした。)

ローカルアドレス      外部アドレス                 状態      
接続先ホストのID:3306  接続先ホストのIDの下二桁のみ違う数字:50525 ESTABLISHED

 DBユーザーのアクセス権限

MySQL serverが実行されているPC上で、mysql.exeを使ってrootユーザーでログインして次のsqlを実行してください。
このsqlの結果を確認したいと思います。
仮に、接続したいユーザー名が'test_user'だとしたら、以下のようなsqlになると思います。
'test_user'の部分は、実際に接続したいユーザーの名前に読み替えてください。(eclipseのプログラムやA5:SQL Mk-2から接続するときのユーザー名です。)

> select user,host from mysql.user where user = 'test_user';

下記は一例ですが、hostに

  • 'localhost'があるか
  • tohokukagakuさんのPCのIPアドレスがあるか(たとえば、tohokukagakuさんのPCのIPが10.0.75.1だとしたら、下記のように10.0.75.%かもしくは10.0.75.1があるか)

の点を確認したいと思います。

+---------------+-------------+
| user          | host        |
+---------------+-------------+
| test_user     | 10.0.75.%   |
| test_user     | localhost   |
+---------------+-------------+

結果追記

myspl %

1 rdw in set(0.05 sec)

また、以下のshow grantsで接続したいユーザーが接続したいデータベースに権限が付与されているか確認したいです。
このsql文の'test_user'@'10.0.75.%'の部分は実際に接続したいユーザーに読み替えてください。

> show grants for 'test_user'@'10.0.75.%';

下記は一例ですが、GRANT ALL PRIVILEGES ON test.* TO 'test_user'@'10.0.75.%' のような行があるか確認したいです。

+-----------------------------------------------------------------------+
| Grants for test_user@10.0.75.%                                        |
+-----------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'test_user'@'10.0.75.%'                         |
| GRANT ALL PRIVILEGES ON `test`.* TO 'test_user'@'10.0.75.%'           |
+-----------------------------------------------------------------------+

結果追記

Grants for mysql`%

GRANT ALL PRIVILEGES ON *.* TO "mysql"@"%" WITH GRANT OPTION

 MySQL serverが実行されているPCからの接続

上記のアクセス権限の確認結果にlocalhostが含まれている場合に、この確認を行って頂きたいです。

tohokukagakuさんのPCからmysql.exeでは接続できなかったということですが、MySQL serverが実行されているPCからの接続はどうでしょうか?
MySQL serverが稼働しているPCから、mysql.exeを使って接続したいユーザーでログインできるか確認してください。
test_userとtest_passの部分は実際に接続したいユーザー名とパスワードに読み替えてください。

> mysql.exe --host=localhost --port=3306 --user=test_user --password=test_pass --database=test

 ローカルPCから接続できなかったときのエラーメッセージ

頂いたコメントで、ローカルPCからは接続できなかったということですが、このときのエラーメッセージはどのようなものでしょうか?

> mysql.exe --host=接続先ホスト名 --port=3306 --user=ユーザー --password=パスワード --database=データベース名
試してみましたが接続することができませんでした。

結果追記

ローカルPCからの接続エラーは下記のように出ました。
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql.exe --host=接続先ホストID --port=3306 --user=mysql --password=パスワード -' at line 1

また、データベース名の指定ですが、A5:SQL Mk-2の接続設定のデータベースの欄の名前です。この場合はデータベース名とスキーマ名は同じと考えてよいと思います。

自分は接続先データベース名は A5:SQL Mk-2 のスキーマと同じだと思い、"test" にしているのですがもしかして間違いでしたか?

A5:SQL Mk-2からは接続できるということですが、たとえば、A5:SQL Mk-2の接続設定が下図のようなものだとして、

イメージ説明

下記のように同じ設定でもmysql.exeからは接続できないということでしょうか?
設定は、tohokukagakuさんのPCのA5:SQL Mk-2の接続設定に読み替えてください。

> mysql.exe --host=10.75.0.200 --port=3306 --user=test_user --password=test_pass --database=test

結果追記

A5:SQL Mk-2からは接続設定と
mysql.exe --host=10.75.0.200 --port=3306 --user=test_user --password=test_pass --database=test
を見比べましたが、違いはありませんでした。

 ローカルPCにMySQL serverはインストールされていますか

mysql.exeで接続確認をされたということですが、ローカルPCにMySQL serverがインストールされているということでしょうか?
もしそうであれば、ローカルPCのMySQL serverが稼働していてA5:SQL Mk-2がそこへ接続しているということはないでしょうか?

結果追記

ローカルPCのmysqlにはtestというデータベースは作成していませんのでA5:SQL Mk-2がそこへ接続しているということはないと思います。

以上、すこし項目が多いですがご確認ください。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/08/08 14:43

    返信が遅れて申し訳ありません。

    > mysql.exe --host=接続先ホスト名 --port=3306 --user=ユーザー --password=パスワード --database=データベース名
    試してみましたが接続することができませんでした。

    PCのIDはA5:SQL Mk-2のDB接続設定のホスト名の内容と同一です。

    コマンドプロントからのping接続は成功しました。

    自分は接続先データベース名は A5:SQL Mk-2 のスキーマと同じだと思い、"test" にしているのですがもしかして間違いでしたか?

    私はチームで開発しているのではなく一人でやっています。
    ただ、実際に使うとき、別のPCからも操作できるようにしたかったため、エラーの原因を調べています。

    キャンセル

  • 2018/08/08 21:04

    コメントありがとうございます。お手数ですが確認事項を追加しましたのでご確認ください。

    キャンセル

  • 2018/08/10 16:25

    返信ありがとうございます。

    > show variables like '%bind%';
     Variable_name value

    bind_address *

    1 row in set, 1 warning (0.27 sec)

    > show variables like '%port%';
    Variable_name Value

    innodb_support ON
    large_files_support ON
    port 3306
    report_host
    report_password
    report_port 3306
    report_user
    require_secure_transport OFF

    8 rows in set, 1 warning(0.00 sec)

    netstatでportの確認について
    はじめは下記の例と同じ内容が行がありました(PIDのみ違う数字)
    A5:SQL Mk-2に接続後も変わらず同じ数字で存在しましたが、
    新しく下記の行が増えました。(pidとオフロード状態は同じ数字でした。)
    ローカルアドレス      外部アドレス                 状態      
    接続先ホストのID:3306  接続先ホストのIDの下二桁のみ違う数字:50525 ESTABLISHED

    DBユーザーのアクセス権限について
    下記のような結果になりました。

    > select user,host from mysql.user where user = 'mysql';
    user host

    myspl %

    1 rdw in set(0.05 sec)

    > show grants for 'mysql'@'%';
    Grants for mysql`%

    GRANT ALL PRIVILEGES ON *.* TO "mysql"@"%" WITH GRANT OPTION

    ローカルPCからの接続エラーは下記のように出ました。
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql.exe --host=接続先ホストID --port=3306 --user=mysql --password=パスワード -' at line 1

    ローカルPCのmysqlにはtestというデータベースは作成していませんのでA5:SQL Mk-2がそこへ接続しているということはないと思います。
    A5:SQL Mk-2からは接続設定と
    mysql.exe --host=10.75.0.200 --port=3306 --user=test_user --password=test_pass --database=test
    を見比べましたが、違いはありませんでした。

    長文申し訳ありません。
    ご確認お願いいたします。

    キャンセル

  • 2018/08/11 00:41

    確認ありがとうございます。1つだけ確認できていない項目があるのでもう一度ご確認ください。

    > ローカルPCからの接続エラーは下記のように出ました。
    > ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'mysql.exe --host=接続先ホストID --port=3306 --user=mysql --password=パスワード -' at line 1

    SQL Syntax errorということなので、コマンドの入力に間違いがあるようです。
    以下のコマンドで再度ご確認ください。xx.xx.xx.xxとしている部分はMySQL Serverが動いているPCのIPアドレスでお願いします。例えば192.168.1.1のような4つの数字をピリオドで区切ったものです。
    mysqlユーザーのパスワードを聞いてくると思いますのでパスワードを入力してください。

    mysql.exe --host=xx.xx.xx.xx --port=3306 --user=mysql


    あと、ちょっと気になる点があるので確認させてください。

    質問文や回答につけて頂いたコメントの文言の中で”PCのID"や”接続先ホストのID"などという表現がありますが、これはPCの"IPアドレス"のことを指していますでしょうか? それともホスト名(アルファベットなどで付けた文字列)でしょうか?

    * IPアドレスとは、例えば "192.168.1.1" のような数字です。
    * ホスト名とは、例えば "my-computer" のような文字です。

    上記の点に関連して、

    * A5:SQL Mk-2のデータベース接続設定画面のホスト名に設定しているのはIPアドレスでしょうか?
    * mysql.exeの--hostで指定していたのはIPアドレスでしょうか?

    の2点も確認させてください。

    キャンセル

  • 2018/08/20 16:14

    PCのID や 接続先ホストのID は
    すべて IPアドレス のことです。
    ややこしい表現をして申し訳ありません

    A5:SQL Mk-2やmysql.exeの--host で指定したのはIPアドレスです。

    一つ質問なのですが
    mysql.exe --host=xx.xx.xx.xx --port=3306 --user=mysql
    これは、コマンドプロントからの入力ですか?
    それともMysqlのCommand Line Clientからの入力ですか?

    何度も申し訳ございません。
    お願いいたします。

    キャンセル

  • 2018/08/23 01:54

    mysql.exeはwindowsのアプリケーションなのでコマンドプロンプトからの実行になります。MySQLのインストールディレクトリのbinにmysql.exeという実行ファイルがあると思います。

    キャンセル

  • 2018/08/24 16:22

    試してみたのですがコマンドプロントからだと
    'mysql.exe' は、内部コマンドまたは外部コマンド、
    操作可能なプログラムまたはバッチ ファイルとして認識されていません。
    と表示されました。

    キャンセル

  • 2018/08/25 13:45

    MySQLをインストールすると、通常はサーバープログラムの「mysqld.exe」と一緒にクライアントプログラムの「mysql.exe」というプログラムもインストールされます。MySQLのインストールディレクトリ下のbinディレクトリに存在すると思うので確認してみてください。もしあればMySQLのbinディレクトリが環境変数pathに設定されていないと思いますのでこちらも確認ください。
    さらに1点確認したいのですが、ローカルPC(つまりEclipseを動かしているPC)にもMySQLをインストールされておられるという認識でいますがあっていますか? 過去のやり取りでそのように受け取れるコメントがあったのでそう思っていたのですが、もしインストールされていないのであれば当然mysql.exeは存在しません。

    キャンセル

  • 2018/08/29 15:19

    ローカルPCにもMySQLをインストールしています。
    rubytomatoさんの言う通り環境変数pathが設定してありませんでした。
    しかし次のようなエラーが出てしまいます。
    ERROR 1045 (28000): Access denied for user 'mysql'@'192.168.2.23' (using password: NO)

    キャンセル

  • 2018/08/29 21:12 編集

    エラーメッセージに出ている"(using password: NO)"という情報から考えると、mysqlユーザーにパスワードが設定されているようです。パスワードの入力を求められたらmysqlユーザーのパスワードを入力してください。

    キャンセル

  • 2018/09/03 13:22

    mysql.exe --host=xx.xx.xx.xx --port=3306 --user=mysql
    を入力してEnterキーを押すとパスワード入力を求められずにこのようなエラーが出てしまいます。

    キャンセル

  • 2018/09/03 21:15

    直前のコメントですが、真逆のことを書いていました。どうも申し訳ありません。(現在は修正済みです。)
    すでにコメントに書いた通りmysqlユーザーのパスワードを入力する必要があります。
    mysql.exe --host=xx.xx.xx.xx --port=3306 --user=mysql -p
    このようにオプションに-pを付けてみてください。

    キャンセル

  • 2018/09/04 11:09

    試したところコマンドプロントからは接続することができました。

    キャンセル

  • 2018/09/04 22:08

    次はデータベース名を指定して接続してみてください。
    mysql.exe --host=xx.xx.xx.xx --port=3306 --user=mysql --database=データベース名 -p
    これで接続できれば、この接続情報を使ってJavaのアプリケーションから接続してみてください。

    キャンセル

  • 2018/09/07 15:46

    mysql.exe --host=xx.xx.xx.xx --port=3306 --user=mysql --database=test -p
    これでコマンドプロントからは接続することができました。
    しかし接続先を下記のようにしてもやはりエラーが出てしまいます。
    jdbc:mysql://xx.xx.xx.xx:3306/test

    キャンセル

  • 2018/09/07 22:34

    mysql.exeから目的のデータベースに接続できたということは接続情報やユーザーの権限に問題ないということですね。
    それではJavaアプリケーションの方に問題がある可能性が高いと思うのですが、念のためいくつか確認させてください。

    1) MySQLが稼働しているPCのJavaアプリケーションからは接続できる
    2) 他のPCのJavaアプリケーションからは接続できない
    3) この2つのPCで実行するJavaアプリケーション(ソースコードやライブラリのバージョン)に差異はない

    ということでいいでしょうか?

    さらに追加で質問させてください。

    1) Javaのバージョン
    2) 開発ツールとそのバージョン
    3) ビルドツール(Maven or Gradle or etc.)とそのバージョン
    4) MySQL Connector/Jのバージョン

    キャンセル

  • 2018/09/13 17:01

    1) MySQLが稼働しているPCのJavaアプリケーションからは接続できる
    2) 他のPCのJavaアプリケーションからは接続できない
    3) この2つのPCで実行するJavaアプリケーション(ソースコードやライブラリのバージョン)に差異はない
    上記につきましては間違いありません。
    ただしMySQLのバージョンは
    MySQLが稼働しているPCでは mysql5.7を
    他のPCでは mysql8.0を使用しています。

    1) Javaのバージョン
     Version 8 Update 181
    2) 開発ツールとそのバージョン
     eclipse neon4.6
    3) ビルドツール(Maven or Gradle or etc.)とそのバージョン
     eclipseにデフォルトで設定してあるビルドツールを使っています。
    4) MySQL Connector/Jのバージョン
     mysql-connector-java-5.1.45bin.jar

    上記のバージョンを使っています。

    キャンセル

  • 2018/09/27 21:45

    コメントありがとうございます。
    同じアプリケーション(ソースコードやライブラリが同一)なのに、実行するPCによって繋がるPCと繋がらないPCがあるということですね。
    また、以前に確認して頂いた接続情報も正しいことが分かっていますので、プログラム側には問題がないように思います。
    ここまで来ると、後は繋がらないPCの環境を実地で調べてみるしかないと思いますが、私の方でそこまですることはできませんので、大変申し訳ありませんがお力になれるのはここまでのようです。
    大変残念ですが、あとは他のユーザーから回答が付くのをお待ち頂くか、実地で調査できる方に協力を仰いで頂きたいと思います。

    キャンセル

0

MySQL 側の設定は skip_ssl になっていますか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/26 15:29

    回答してくださり、ありがとうございます。
    していないと思われます。
    お手数ですがMysql側でのskip_sslの設定の仕方を教えていただけませんか?

    キャンセル

  • 2018/07/27 10:26

    /etc/my.cnf というMySQL の設定ファイルがあるかと思いますが、
    その中の[mysqld]セクションの中に"skip_ssl"を追記してあげればSSL通信は無効化できます。

    @tkmtmkt さんの仰るように、外部接続がそもそも許可されていない場合は、
    以下のように専用のユーザを作成することで対応できるかと思います。

    ●ユーザ作成(MySQLにログインして実行)
    > grant all privileges on [db_name].* to [user_name]@"[ip_address]" identified by '[password]' with grant option;
    ※接続元IPやアクセスを可能にするDB名などは適宜変更してください。

    ●確認
    > select user,host from mysql.user;
    上で作成したユーザが追加されていればOKです。

    キャンセル

  • 2018/07/27 14:42

    my.cnf ファイルが見当たらず調べてみたところ、windows はmy.ini というファイル名になっているとのことで、C/Programdata/MySQL/MySQL Server 5.7/my.ini のファイルを編集しました。
    そのファイルの[mysqld] の真下の行にskip_ssl を追加したのですが同じエラ-がでてしまいました。
    やはり、windowsでもmy.cnfファイルが別で存在するのでしょうか?
    また、その場合ファイルがどこにあるか調べ方はあるのでしょうか?
    何度も質問して申し訳ございません。

    外部接続の許可については% になっているため大丈夫かと思われます。

    キャンセル

  • 2018/07/27 16:56

    開発環境はWindowsだったんですね。
    ちなみに、SSL通信は無効にしたいのでしょうか。有効でも問題ないのであれば、
    my.ini の"skip_ssl"は削除して、ソースコードの url 中にあるデータベース名の後ろを
    "?verifyServerCertificate=false&useSSL=true" にするという方法もあるかと思います。

    キャンセル

  • 2018/07/30 13:29

    返信が遅れて申し訳ありません。
    他のサイトでエラーの原因がSSLではないかという記事を見ましてそれで無効にしようとしていただけですので、有効でもエラーが起きないのでしたらどちらでも大丈夫です。

    さっそく試してみたのですが同じエラーが出てしまいました。

    キャンセル

  • 2018/07/31 09:17

    SSL接続がOFFの時も、ONの時も同じエラーが出るとなると、ネットワーク的な問題か、あるいはちゃんとした証明書が無い状態になってしまっているのだと思います。
    DB名の後ろを"?useSSL=true&requireSSL=true"の状態にするとどうなるでしょうか?
    また、conf/application.yml の environments: の記述はどうなっているでしょうか?

    キャンセル

  • 2018/08/01 14:45

    DB名の後ろは変えても同じエラーが出てしまいました。

    もしかして、SSL証明書がない場合、外部からの接続は不可能なのでしょうか?
    SSL証明書の作り方がよくわからず自分は作成していないのですが、
    eclipseのDBViewer やA5:SQL Mk-2 ではSSLなしで接続できていたため関係ないと思っていました。

    キャンセル

0

別のPCのMySQLの設定は、外部ホストから接続できるようになっているでしょうか?
以下のMySQLで以下のSQL実行してhost列にホスト名またはIPアドレスが無かったら外部から接続できません。

SQL> select user,host from mysql.user;
+---------+-------------------------+
| user    | host                    |
+---------+-------------------------+
| root    | 127.0.0.1               |
| root    | ::1                     |
|         | localhost               |
| root    | localhost               |
|         | {ホスト名}               |
| root    | {ホスト名}               |
+---------+-------------------------+

【参考】

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/07/27 14:44

    回答してくださり、ありがとうございます。
    外部接続については% になっているため大丈夫かと思われます。

    キャンセル

0

1.useSSLおよびrequireSSLをFalseにしてSSLは利用しないようにする。(warningへの対応)
※本当であればSSL通信が良い。

2.com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown database 'test'
テストという名前のDBが見つかっていないようなので、
そもそものその対応をする。
rubytomatoさんが御指摘の内容の対応になると思います。

String url = "jdbc:mysql://PCのID:3306/データベース名?autoReconnect=true&useSSL=false&requireSSL=false

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

  • ただいまの回答率 90.50%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Java

    13794questions

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

  • MySQL

    5856questions

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

  • Eclipse

    1660questions

    Eclipseは、IBM社で開発された統合開発環境のひとつです。2001年11月にオープンソース化されました。 たくさんのプラグインがあり自由に機能を追加をすることができるため、開発ツールにおける共通プラットフォームとして位置づけられています。 Eclipse自体は、Javaで実装されています。