eclipseでのMySQLとの接続

受付中

回答 2

投稿 編集

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

Shioharu

score 8

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

 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/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

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

    キャンセル

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

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

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