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

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

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

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

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Eclipse

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

Q&A

2回答

34939閲覧

eclipseでのMySQLとの接続

Shioharu

総合スコア10

MySQL

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

JDBC

JDBC(Java DataBase Connectivity)は、Javaとリーレーショナルデータベースに接続させる基本的なAPIです。Java上でSQLステートメントを発行することで、データベースの種類に影響を受ないDB操作を可能とします。

Java

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

Eclipse

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

0グッド

1クリップ

投稿2016/04/20 05:14

編集2016/04/22 02:46

プログラミング初心者です。
質問内容を修正させていただきました。

eclipseにてMySQLとの接続を試みているのですが、テスト接続の際に「Pingが失敗しました」というエラーメッセージが出てきてしまい上手くいきません。

以下は状況説明です。

まず、データ・ソース・エクスプローラーから新規接続プロファイルを開き、「MySQL」を選択しました。

次に「新規ドライバー定義」を選択し、「名前/タイプ」タブの「使用可能なドライバー・テンプレート」からMySQL JDBCドライバーの5.1を選択しました。
また、その際に「Jarリスト」タブにてmysql-connector-java-5.1.8-binを追加いたしました。

最後に、ドライバーおよび接続の詳細の指定の一般タブにて下記のように記載しました。

データベース:database
URL:jdbc:mysql://localhost:3306/database
ユーザー名:root
パスワード:未記入

この段階で接続テストを実行したところ、「Pingが失敗しました」とだけ記載されたエラーメッセージが表示されました。

未熟故文章や状況説明等甘い部分があり申し訳ないのですが何卒お力添えいただきますよう、心よりお願いいたします。

(使用しているツール等)
eclipse4.4
MySQL5.7
tomcat8.0
mysql-connector-java-5.1.8-bin

【追記】
http://web.sfc.wide.ad.jp/~tinaba/tutorials/mysql-j/

教えていただいた上記のURLを参考に作業をおこなったところ以下のエラーメッセージが出ました。

データベース接続エラー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.

この場合の解決方法を教えていただけると幸いです…
よろしくお願いいたします。

【追記2】
使用しているOS:Windows 7 Professional

(my.defaylt.iniファイルの内容)

For advice on how to change settings please see

http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html

*** DO NOT EDIT THIS FILE. It's a template which will be copied to the

*** default location during install, and will be replaced if you

*** upgrade to a newer version of MySQL.

[mysqld]

Remove leading # and set to the amount of RAM for the most important data

cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.

innodb_buffer_pool_size = 128M

Remove leading # to turn on a very important data integrity option: logging

changes to the binary log between backups.

log_bin

These are commonly set, remove the # and set as required.

basedir = .....

datadir = .....

port = .....

server_id = .....

Remove leading # to set options mainly useful for reporting servers.

The server defaults are faster for transactions and fast SELECTs.

Adjust sizes as needed, experiment to find the optimal values.

join_buffer_size = 128M

sort_buffer_size = 2M

read_rnd_buffer_size = 2M

#sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES

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

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

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

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

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

KiyoshiMotoki

2016/04/20 05:20

これだけでは状況が分からないので、どのような手順を実施して、どの時点で「Pingが失敗しました」と表示されるのか、できるだけ詳しく記載してください。エラーメッセージについても、省略せず、可能な限り全て記載するようにしてください。あるいは、DB接続部分のソースコードがあれば、それも追記してください。
Shioharu

2016/04/20 05:34

ご指摘ありがとうございます! すぐに修正させていただきます!
Shioharu

2016/04/20 05:43

度々恐縮なのですが、DB接続部分のソースコードが必要であることをMotoki様からのお言葉で初めて知りました…申し訳ありません、お恥ずかしい限りです。そのためその部分について記載できませんでした…
tonarino210

2016/04/20 06:08

pingが失敗したという事は、通信自体ができていないので接続先URLが違っていたりMySQLが立ち上がっていなかったり、ポートが開いていなかったり・・・
Shioharu

2016/04/20 06:52

ご指摘ありがとうございます。 初歩的な質問で申し訳ないのですが、「MySQLを立ち上げる」というのはコマンドラインからログインする、ということでしょうか…?
KiyoshiMotoki

2016/04/20 07:18 編集

違います。MySQLが起動しているか確認するためにログインしてみる、ということです。MySQL起動していなければ、絶対にログインすることはできませんよね?また、ログインできなかったとしても、"Access denied for user'root'@'localhost'(using password:YES)"というエラーメッセージが返ってきているということからも、MySQLが起動中だということが分かります。なぜなら、このエラーメッセージはMySQLが返しているものですので。
Shioharu

2016/04/20 07:45

なるほど…!ありがとうございます!
guest

回答2

0

こんにちは。

ファイヤーウォールではじかれている可能性がありそうです。
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q10107272615

投稿2016/04/20 07:09

kaputaros

総合スコア1844

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

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

Shioharu

2016/04/20 07:41

ご指摘ありがとうございます! ファイアウォールの設定を変更したのですがまだ解決できなかったため、ほかの方法も試します!
guest

0

情報の追記、ありがとうございます。

以下を確認してみてください。

MySQLは正しくインストールされ、起動しているか?

コマンドラインからMySQLにログインできれば、問題ないでしょう。

"database"というスキーマが作成済みか?

URLの末尾の"database"は、ログインするスキーマの名前を指定します。
"database"は、正しいスキーマ名ですか?

ホスト名、ユーザー名とパスワード、接続ポート

"root@localhost"という名前の、パスワード無しのユーザーは作成済みですか?
また、接続ポートは3306から変更していませんか?
コマンドラインから

sh

1mysql -uroot -hlocalhost -P3306 database

などと実行して、ログインできるか確認してみてください。
(パスを通していなければ、"mysql"部分はフルパスで指定してください)

ちなみに、

DB接続部分のソースコードが必要であることをMotoki様からのお言葉で初めて知りました

ソースコードが必要なのは、JavaプログラムからMySQLに接続する場合です。
先ほどの時点では、EclipseとJavaプログラム、どちらからの接続を試みているのか確証が持てなかったので、そのように質問させていただきました。


問題の切り分けのため、以下の手順を試してみてください。

Eclipseで適当なプロジェクトを作成し、以下のリンクの
「ライブラリのインポート」
という項を参考に、mysql-connector-java-5.1.8-binファイルをクラスパスに追加してください。
http://web.sfc.wide.ad.jp/~tinaba/tutorials/mysql-j/

作成したプロジェクトのデフォルトパッケージ("パッケージ"欄を空欄にする)内にMainという名前のクラスを作成してください。

作成したクラスに以下のコードをそのままペーストしてください。

java

1import java.sql.Connection; 2import java.sql.DriverManager; 3import java.sql.ResultSet; 4import java.sql.SQLException; 5import java.sql.Statement; 6 7public class Main { 8 9 public static void main(String[] args) throws SQLException { 10 Connection connection = DriverManager 11 .getConnection("jdbc:mysql://localhost:3306/database?user=root&password=【正しいパスワード】"); 12 Statement statement = connection.createStatement(); 13 ResultSet resultSet = statement.executeQuery("SELECT 1"); 14 while (resultSet.next()) { 15 System.out.println(resultSet.getString(1)); 16 } 17 } 18 19}

"【正しいパスワード】"部分は、ご自分の設定に合わせて変更してください。

作成したプロジェクトを実行してみてください。

エラーメッセージが表示されたら、それを全て、質問欄に追記してください。
もし、エラーなく正常に実行できた(コンソールに"1"と表示される)なら、ソースコードからは正常に接続できる、ということになるので、WTPの、MySQLの接続設定とは別の原因で問題が起きている可能性があります。


検証ありがとうございます。

提示いただいたエラーメッセージで検索したところ、以下の現象と同様ではないかと思います。
https://bbs.archlinux.org/viewtopic.php?id=92550

ですので、MySQLの設定ファイルからskip-networkingというオプションをすべてコメントアウト(行の先頭に#を追加)し、MySQLを再起動して、もう一度試してみてください。
http://dev.mysql.com/doc/refman/5.6/ja/server-options.html

MySQLの設定ファイルの場所は、お使いのマシンがWindowsなら以下を、
http://www.dbonline.jp/mysql/myini/index1.html

Macなら以下を参考に探してみてください。
http://qiita.com/is0me/items/12629e3602ebb27c26a4

上のリンクにあるように設定ファイルはいくつかありますので、全ての設定ファイルから該当のオプションをコメントアウトするようにしてください。

正しく設定できたか確認するために、MySQLを再起動後、MySQLにログインして以下のSQLを実行してください。

sql

1SHOW VARIABLES lIKE '%networking%';

以下のように表示されたなら、正しく設定できています。

+-----------------+-------+ | Variable_name | Value | +-----------------+-------+ | skip_networking | OFF | +-----------------+-------+ 1 row in set (0.00 sec)

投稿2016/04/20 06:06

編集2016/04/21 02:36
KiyoshiMotoki

総合スコア4791

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

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

Shioharu

2016/04/20 06:48

丁寧に説明していただき本当にありがとうございます!  教えていただいた方法を実行した結果、MySQLは正しくインストールできておりました。 そして、URLの末尾がスキーマを指定していることを初めて知ることができました…ありがとうございます。  最後の「ホスト名、ユーザー名とパスワード、接続ポート」という項目においてコマンドラインを実行したところ、「Access denied for user'root'@'localhost'(using password:YES)」というエラーメッセージが出ました。  この場合は、MySQLは初期設定の「root」以外のユーザーを追加していないのが原因なのでしょうか? 追記:ポート番号は3306から変更しておりません。 どうぞよろしくお願い致します…!
KiyoshiMotoki

2016/04/20 07:05

私が思いつく原因としては、  1.パスワードを入力し間違えた  2.パスワードが設定されていないにもかかわらずパスワードを入力してログインしようとした  3.そもそも'root'@'localhost'というユーザーが存在しない といったところです。 "3."のありがちな間違いとしては、'root'@'127.0.0.1'というユーザーを作成して'root'@'localhost'でログインしようとする、というものです。 '127.0.0.1'と'localhost'は、意味的には同じですが、MySQLは異なるホストと認識します。
Shioharu

2016/04/20 07:34

恥ずかしながら、パスワードをきちんと入力したところ無事にログインできました…。 ですが依然として通信ができません…通信の問題なのでしょうか…?
KiyoshiMotoki

2016/04/20 07:39 編集

> パスワード:未記入 ここに正しいパスワードを入力してもう一度試してみてください。
Shioharu

2016/04/20 07:44

失敗してしまいました…!すみません…
KiyoshiMotoki

2016/04/20 07:52

ご質問が解決済みになりましたが、接続できた、ということでしょうか?
Shioharu

2016/04/20 07:55

まだ解決しておりません…紛らわしくて申し訳ありません…
KiyoshiMotoki

2016/04/20 08:09

手元に環境がないので以下のリンクを見ただけの回答となってしまいますが、 http://allabout.co.jp/gm/gc/80678/ 気になったのが、 「上のページではURL部分でデータベース名(URL末尾の"database/"部分)を指定していない」 というところです。http://imgcp.aacdn.jp/img-a/auto/auto/aa/gm/article/8/0/6/7/8/img6.jpg こちらも試してみてはいかがでしょうか? それでもダメなら、やはりファイアウォールの可能性があるかもしれません。 kaputaros様の回答に対するコメントに > ファイアウォールの設定を変更したのですがまだ解決できなかった とありますが、念のため、いったんファイアウォール自体を落としてから再度、試してみることをお勧めします。
Shioharu

2016/04/20 08:53

ありがとうございます…! いただいたリンクを参照させていただいたき、試した後にファイアウォールを落として再試行したのですが、テスト接続できませんでした… ためしにポート番号をtomcatに合わせてみたりもしたのですが、やはり厳しかったです…
KiyoshiMotoki

2016/04/20 09:45 編集

原因旧名のための手順を、回答欄に追記しました。 確認願います。 ちなみに、 > ためしにポート番号をtomcatに合わせてみたりもしたのですが、やはり厳しかったです 当然ですw おそらくローカルマシン上にTomcatとMySQLを同居させていると思いますが、その場合、別々のポートを設定しないとどちらかが動かなくなります。
Shioharu

2016/04/21 01:45

ありがとうございます…! 試させていただきエラーメッセージを追加させていただきました…!
KiyoshiMotoki

2016/04/21 02:41

回答欄に追記させていただきました。 確認願います。
Shioharu

2016/04/22 01:18

ありがとうございます! MySQLの設定ファイルへのコメントアウトは無事に成功したのですが、依然として「pingが失敗しました」というエラーメッセージが表示されてしまいます…
KiyoshiMotoki

2016/04/22 01:20

Javaプログラムを実行したら、どうなりますか? エラーメッセージが変化していないか、確認してみてください。
Shioharu

2016/04/22 02:07

エラーメッセージは変わらず、「データベース接続エラー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. 」でした…!
KiyoshiMotoki

2016/04/22 02:28

さらに詳しい状況を知りたいので、以下を教えてください。  1. お使いのマシンのOSとバージョン  2. 全てのMySQL設定ファイルの内容 "2."については、このコメント欄に書くと見づらいので、質問欄に ``` (ファイルの内容) ``` という形で追記してもらえると助かります。
Shioharu

2016/04/22 02:48 編集

ありがとうございます! 加筆修正させていただきました。 また、confファイルが見当たらなかったので上記のファイルしか編集できませんでした…。
KiyoshiMotoki

2016/04/22 02:59 編集

情報の追記、ありがとうございます。 しかし、ファイル名から察するに、"my.default.ini"ファイルはバックアップ用の設定ファイルで、これを読み込んでMySQLが起動しているわけではなさそうです。 "--skip-networking"の設定変更が成功したように見えたのも、実は最初から設定されていなかっただけかもしれません。 お手数ですが、今度はMySQLにログインして、以下のSQLを実行した結果を質問欄に追記願います。 SHOW VARIABLES; 上下を"```"で囲むのを忘れずに。 というか、 > MySQLの設定ファイルへのコメントアウトは無事に成功したのですが、 提示いただいた設定ファイルに、該当のコメントアウト行が見当たりません。 これはどういうことですか?
Shioharu

2016/04/25 01:28 編集

ありがとうございます!初歩的な質問で恐縮なのですが、 >上下を"```"で囲むのを忘れずに。 というのは、どの部分を指すのでしょうか…? そして、間違って追記させていただいたファイルの件、申し訳ありません。 今一度修正させていただきたく再度先日と同じファイルを確認したのですが、設定ファイルは my.default.ini しか見当たらなかったためそちらの内容をそのまま貼り付けさせていただきました…
KiyoshiMotoki

2016/04/25 02:41 編集

情報の追記、ありがとうございます。 > >上下を"```"で囲むのを忘れずに。 > というのは、どの部分を指すのでしょうか…? 質問欄を編集する時、"</>"というマークのボタンを押してみてください。 質問欄に  ```ここに言語を入力  コード  ``` という3行が追加されるはずです。 ここに、例えば  ```  (my.iniの場所)  ``` というふうに記載すると、その部分は私の回答の  mysql -uroot -hlocalhost -P3306 database 部分のように、ソースコードとして見やすく表示されます。 最低限、Teratailのこの機能は知っておいた方が良いと思います。 私の印象だと、読みにくい質問はスルーされやすい傾向にあると感じますので。 > 間違って追記させていただいたファイルの件、申し訳ありません。 情報は正確に伝えるよう、心がけてください。 恐らく  SHOW VARIABLES lIKE '%networking%'; の実行結果が期待通りだったために 「設定ファイルへのコメントアウトは無事に成功した」 とおっしゃったのかと思いますが、この一言から、私は 「Shioharu様が正しい設定ファイルを見つけることができた」 という誤った情報まで受け取ってしまいました。 もし、この誤解に気づかないままだと、私はミスリードする回答を続けてしまったかもしれません。 > 設定ファイルは my.default.ini しか見当たらなかったため お使いのマシンがWindows7 とのことですので、以下のリンクを参考に、もう一度探してみてください。 http://webdev.jp.net/windows7-mysql55-my-ini/
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問