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

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

ただいまの
回答率

90.47%

  • Java

    14090questions

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

  • MySQL

    6002questions

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

  • Eclipse

    1706questions

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

  • JDBC

    94questions

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

eclipseでのMySQLとの接続

受付中

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 11K+

Shioharu

score 2

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

 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 

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • Shioharu

    2016/04/20 15:52

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

    キャンセル

  • KiyoshiMotoki

    2016/04/20 16:16 編集

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

    キャンセル

  • Shioharu

    2016/04/20 16:45

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

    キャンセル

回答 2

+1

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

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

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

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

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

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

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

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

mysql -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という名前のクラスを作成してください。

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

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

public class Main {

    public static void main(String[] args) throws SQLException {
        Connection connection = DriverManager
                .getConnection("jdbc:mysql://localhost:3306/database?user=root&password=【正しいパスワード】");
        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery("SELECT 1");
        while (resultSet.next()) {
            System.out.println(resultSet.getString(1));
        }
    }

}


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

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

エラーメッセージが表示されたら、それを全て、質問欄に追記してください。
もし、エラーなく正常に実行できた(コンソールに"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を実行してください。

SHOW VARIABLES lIKE '%networking%';

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

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

投稿

編集

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/20 15:48

    丁寧に説明していただき本当にありがとうございます!

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

    追記:ポート番号は3306から変更しておりません。

    どうぞよろしくお願い致します…!

    キャンセル

  • 2016/04/20 16:05

    私が思いつく原因としては、
     1.パスワードを入力し間違えた
     2.パスワードが設定されていないにもかかわらずパスワードを入力してログインしようとした
     3.そもそも'root'@'localhost'というユーザーが存在しない

    といったところです。

    "3."のありがちな間違いとしては、'root'@'127.0.0.1'というユーザーを作成して'root'@'localhost'でログインしようとする、というものです。
    '127.0.0.1'と'localhost'は、意味的には同じですが、MySQLは異なるホストと認識します。

    キャンセル

  • 2016/04/20 16:34

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

    キャンセル

  • 2016/04/20 16:39 編集

    > パスワード:未記入

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

    キャンセル

  • 2016/04/20 16:44

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

    キャンセル

  • 2016/04/20 16:52

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

    キャンセル

  • 2016/04/20 16:55

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

    キャンセル

  • 2016/04/20 17: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様の回答に対するコメントに

    > ファイアウォールの設定を変更したのですがまだ解決できなかった

    とありますが、念のため、いったんファイアウォール自体を落としてから再度、試してみることをお勧めします。

    キャンセル

  • 2016/04/20 17:53

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

    キャンセル

  • 2016/04/20 18:45 編集

    原因旧名のための手順を、回答欄に追記しました。
    確認願います。

    ちなみに、
    > ためしにポート番号をtomcatに合わせてみたりもしたのですが、やはり厳しかったです

    当然ですw
    おそらくローカルマシン上にTomcatとMySQLを同居させていると思いますが、その場合、別々のポートを設定しないとどちらかが動かなくなります。

    キャンセル

  • 2016/04/21 10:45

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

    キャンセル

  • 2016/04/21 11:41

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

    キャンセル

  • 2016/04/22 10:18

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

    キャンセル

  • 2016/04/22 10:20

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

    キャンセル

  • 2016/04/22 11: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.
    」でした…!

    キャンセル

  • 2016/04/22 11:28

    さらに詳しい状況を知りたいので、以下を教えてください。

     1. お使いのマシンのOSとバージョン
     2. 全てのMySQL設定ファイルの内容

    "2."については、このコメント欄に書くと見づらいので、質問欄に
    ```
    (ファイルの内容)
    ```
    という形で追記してもらえると助かります。

    キャンセル

  • 2016/04/22 11:47 編集

    ありがとうございます!
    加筆修正させていただきました。

    また、confファイルが見当たらなかったので上記のファイルしか編集できませんでした…。

    キャンセル

  • 2016/04/22 11:55 編集

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

    しかし、ファイル名から察するに、"my.default.ini"ファイルはバックアップ用の設定ファイルで、これを読み込んでMySQLが起動しているわけではなさそうです。

    "--skip-networking"の設定変更が成功したように見えたのも、実は最初から設定されていなかっただけかもしれません。

    お手数ですが、今度はMySQLにログインして、以下のSQLを実行した結果を質問欄に追記願います。

    SHOW VARIABLES;

    上下を"```"で囲むのを忘れずに。


    というか、

    > MySQLの設定ファイルへのコメントアウトは無事に成功したのですが、

    提示いただいた設定ファイルに、該当のコメントアウト行が見当たりません。
    これはどういうことですか?

    キャンセル

  • 2016/04/25 10:24 編集

    ありがとうございます!初歩的な質問で恐縮なのですが、

    >上下を"```"で囲むのを忘れずに。

    というのは、どの部分を指すのでしょうか…?

    そして、間違って追記させていただいたファイルの件、申し訳ありません。
    今一度修正させていただきたく再度先日と同じファイルを確認したのですが、設定ファイルは my.default.ini しか見当たらなかったためそちらの内容をそのまま貼り付けさせていただきました…

    キャンセル

  • 2016/04/25 11:36 編集

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

    > >上下を"```"で囲むのを忘れずに。
    > というのは、どの部分を指すのでしょうか…?

    質問欄を編集する時、"</>"というマークのボタンを押してみてください。
    質問欄に
     ```ここに言語を入力
     コード
     ```
    という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/

    キャンセル

+1

こんにちは。

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

投稿

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2016/04/20 16:41

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

    キャンセル

関連した質問

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

  • Java

    14090questions

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

  • MySQL

    6002questions

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

  • Eclipse

    1706questions

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

  • JDBC

    94questions

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