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

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

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

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

Java

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

Eclipse

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

Q&A

解決済

4回答

2532閲覧

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

tohokukagaku

総合スコア12

MySQL

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

Java

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

Eclipse

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

0グッド

0クリップ

投稿2018/07/26 04:57

編集2018/07/27 05:51

前提・実現したいこと

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

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

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

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

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

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

guest

回答4

0

ベストアンサー

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/01 13:58

編集2018/08/10 15:02
rubytomato

総合スコア1752

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

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

tohokukagaku

2018/08/08 05:43

返信が遅れて申し訳ありません。 > mysql.exe --host=接続先ホスト名 --port=3306 --user=ユーザー --password=パスワード --database=データベース名 試してみましたが接続することができませんでした。 PCのIDはA5:SQL Mk-2のDB接続設定のホスト名の内容と同一です。 コマンドプロントからのping接続は成功しました。 自分は接続先データベース名は A5:SQL Mk-2 のスキーマと同じだと思い、"test" にしているのですがもしかして間違いでしたか? 私はチームで開発しているのではなく一人でやっています。 ただ、実際に使うとき、別のPCからも操作できるようにしたかったため、エラーの原因を調べています。
rubytomato

2018/08/08 12:04

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

2018/08/10 07: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 を見比べましたが、違いはありませんでした。 長文申し訳ありません。 ご確認お願いいたします。
rubytomato

2018/08/10 15: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点も確認させてください。
tohokukagaku

2018/08/20 07: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からの入力ですか? 何度も申し訳ございません。 お願いいたします。
rubytomato

2018/08/22 16:54

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

2018/08/24 07:22

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

2018/08/25 04:45

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

2018/08/29 06:19

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

2018/09/03 12:14 編集

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

2018/09/03 04:22

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

2018/09/03 12:15

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

2018/09/04 02:09

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

2018/09/04 13:08

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

2018/09/07 06:46

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

2018/09/07 13: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のバージョン
tohokukagaku

2018/09/13 08: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 上記のバージョンを使っています。
rubytomato

2018/09/27 12:45

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

2018/10/23 07:29

何度も質問に答えていただきありがとうございました。 大変勉強になりました。 ベストアンサーに選ばせていただきます。
guest

0

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

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

Java

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

投稿2018/08/08 07:12

milkteas

総合スコア79

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

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

0

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

sql

1SQL> select user,host from mysql.user; 2+---------+-------------------------+ 3| user | host | 4+---------+-------------------------+ 5| root | 127.0.0.1 | 6| root | ::1 | 7| | localhost | 8| root | localhost | 9| | {ホスト名} | 10| root | {ホスト名} | 11+---------+-------------------------+

【参考】

投稿2018/07/26 07:42

編集2018/07/26 07:45
tkmtmkt

総合スコア1800

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

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

tohokukagaku

2018/07/27 05:44

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

0

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

投稿2018/07/26 05:22

zvub1123

総合スコア230

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

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

tohokukagaku

2018/07/26 06:29

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

2018/07/27 01: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です。
tohokukagaku

2018/07/27 05:42

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

2018/07/27 07:56

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

2018/07/30 04:29

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

2018/07/31 00:17

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

2018/08/01 05:45

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問