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

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

2回答

3767閲覧

eclipseとmysqlが接続できない

nononon

総合スコア10

MySQL

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

Java

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

Eclipse

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

0グッド

1クリップ

投稿2018/12/13 05:33

編集2018/12/14 06:31

前提・実現したいこと

ほぼ全くの初心者なのですが、eclipseで作ったプロジェクトのlibフォルダにmysql-connector-java-5.1.47-bin.jarを入れて接続しようとしましたがつながりません。

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

ドライバのロードに失敗しました java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up. at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:110) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:89) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:63) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:73) at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:905) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:830) at com.mysql.cj.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:455) at com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:240) at com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:207) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:270) at MyQuery.main(MyQuery.java:18) Caused by: com.mysql.cj.exceptions.CJException: Access denied for user ''@'localhost' (using password: NO) 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.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:61) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:105) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:151) at com.mysql.cj.exceptions.ExceptionFactory.createException(ExceptionFactory.java:129) at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:809) at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:734) at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:702) at com.mysql.cj.protocol.a.NativeProtocol.checkErrorMessage(NativeProtocol.java:132) at com.mysql.cj.protocol.a.NativeAuthenticationProvider.proceedHandshakeWithPluggableAuthentication(NativeAuthenticationProvider.java:540) at com.mysql.cj.protocol.a.NativeAuthenticationProvider.connect(NativeAuthenticationProvider.java:202) at com.mysql.cj.protocol.a.NativeProtocol.connect(NativeProtocol.java:1442) at com.mysql.cj.NativeSession.connect(NativeSession.java:165) at com.mysql.cj.jdbc.ConnectionImpl.connectWithRetries(ConnectionImpl.java:849) ... 7 more

該当のソースコード

import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.Statement; public class MyQuery { public static void main(String[] args) { // TODO 自動生成されたメソッド・スタブ Connection conn = null; String url = "jdbc:mysql://localhost/helloworld?useSSL=false&requireSSL=false"; String user = "root"; String password = "password"; String msg = ""; try { // ドライバロード Class.forName("com.mysql.jdbc.Driver"); // MySQLに接続 conn = DriverManager.getConnection(url, user, password); // ステートメント生成 Statement stmt = conn.createStatement(); // SQLを実行 ResultSet rs = stmt.executeQuery("SELECT * FROM test"); // 結果行をループ while(rs.next()){ // レコードの値 int Field = rs.getInt("helloworld"); //表示 System.out.println(Field); } // 接続を閉じる rs.close(); stmt.close(); }catch (ClassNotFoundException e){ msg = "ドライバのロードに失敗しました"; System.out.println(msg); e.printStackTrace(); }catch (Exception e){ msg = "ドライバのロードに失敗しました"; System.out.println(msg); e.printStackTrace(); } } }

と出てしまうのでmysql-connector-java-5.1.47-bin.jarを入れるフォルダが間違っているのかなと思っています。

試したこと

ここに問題に対して試したことを記載してください。

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

このサイト通りに進めればできるなどあれば教えてください。

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

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

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

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

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

m.ts10806

2018/12/13 05:34

ソースコードはマークダウンのcode機能を利用してください。
Orlofsky

2018/12/13 05:54

[Java]タグを追加しては?
m.ts10806

2018/12/13 06:15

Orlofskyさん 編集された形跡がないのでおそらく最初からあります。
nononon

2018/12/13 06:43

すみません、使い方を知りませんでした、教えて頂きありがとうございます。
guest

回答2

0

エラーメッセージが下記のとおり出力されています。

Caused by: java.sql.SQLException: Access denied for user ''@'localhost' (using password: NO)

DriverManager.getConnectionでユーザとパスワードが必要では

DriverManager.getConnection( url, user, password );

投稿2018/12/13 06:56

MAKOTO_MOBY

総合スコア193

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

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

nononon

2018/12/13 07:14

DriverManager.getConnection( url, user, password );で入力しなおしてみたところ Thu Dec 13 16:12:37 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. というエラーになりました。
MAKOTO_MOBY

2018/12/13 07:27

解決しないようであれば、設定ファイル my.cnfに下記を追加してみる方法もあるようです。 [mysqld]セクションに skip_ssl ↑を追加 https://hacknote.jp/archives/24742/
nononon

2018/12/14 01:58

useSSL=false&requireSSL=falseを入れたところエラーは何も表示されなくはなったのですが、テーブル情報の取得もできませんでした、SQL文が何か間違っているのでしょうか。
MAKOTO_MOBY

2018/12/14 02:07

SQLが間違っているとExceptionが発生すると思います。 テーブルにデータが無い以外は、申し訳ございませんがわからないです。
nononon

2018/12/14 05:20

+--------------------+ | Database | +--------------------+ | helloworld | | information_schema | | mysql | | performance_schema | | sakila | | sys | | world | +--------------------+ 7 rows in set (0.01 sec) mysql> use helloworld; Database changed mysql> show tables; +----------------------+ | Tables_in_helloworld | +----------------------+ | test | +----------------------+ 1 row in set (0.00 sec) mysql> desc test; +------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+--------------+------+-----+---------+-------+ | helloworld | varchar(255) | YES | | NULL | | +------------+--------------+------+-----+---------+-------+ 1 row in set (0.00 sec) このようにデータベースは作ってあるのですが・・・
MAKOTO_MOBY

2018/12/14 05:52

ソースでは、テーブル testhelloworldをselectしていますが、 String sqlStr = "SELECT * FROM testhelloworld"; データベース helloworldの中には、testというテーブルしかないようですが。
nononon

2018/12/14 06:12

変えて実行してみたのですが変わりませんでした。
MAKOTO_MOBY

2018/12/14 06:18

testテーブルには、helloworld(文字列型)というカラムしかありませんが、 プログラムでは、user_id, user_nameというカラムを取ろうとしています。 変えて実行されたとのことで、「変えた」とは何をどういうふうに変えたのでしょうか?
nononon

2018/12/14 06:33

すみません、今質問文の該当のソースコードを変えたものに変更しました。
MAKOTO_MOBY

2018/12/14 06:36

test テーブルのカラム:helloworldはvarcharですので、 記載のソースコード int Field = rs.getInt("helloworld"); ではなく、 String field = rs.getString("helloworld"); ではないでしょうか?
guest

0

単に入れるだけではなくビルドパスで指定しないと連携できなかったような気がします。

あとはドライバ指定が古いのかもしれません。

java

1Class.forName("org.gjt.mm.mysql.Driver");

java

1Class.forName("com.mysql.jdbc.Driver");

投稿2018/12/13 05:35

編集2018/12/13 06:00
m.ts10806

総合スコア80850

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

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

nononon

2018/12/13 05:40

今ビルドパスからビルドパスの構成、ライブラリに追加してやってみたのですがダメでした。
m.ts10806

2018/12/13 05:43

一応、回答にもともと貼った記事にもjdbcドライバーを使うように書いてあります。
nononon

2018/12/13 06:16

変えてみたのですが、実行を押してからちょっと結果が出るまで遅くなったのですが、結果は変わりませんでした。
m.ts10806

2018/12/13 06:21

なるほど。 現在のコードを質問本文に反映していただけますか? コードは選択状態にしてcodeボタンを押してください。 あとは…Exception拾ったときのメッセージが同じではどちらを通ってるかわからないので変更した上で e.printStackTrace()とかe.getMessage()とかくっつけてシステムから吐き出されたエラーを出力するようにして内容確認してください
nononon

2018/12/13 06:51

質問本文に反映いたしました。
m.ts10806

2018/12/13 06:53 編集

余計なものはいってませんか? com.mysql.cj.jdbc.Driver ではなく com.mysql.jdbc.Driver 手打ちではなくコピペしてください。 cj.はどこから来たんだろう・・・
m.ts10806

2018/12/13 06:58

と思ったんですが、違うかもしれませんね。 エラーメッセージのほうをざっくりしか見れてませんでした。失礼。
m.ts10806

2018/12/13 07:21

ところでMySQLは起動しているのでしょうか。
nononon

2018/12/13 07:31

はい、MySQLは起動しています、データでベースもテーブルも作成してあります。
m.ts10806

2018/12/13 07:33

了解です。でしたらドライバ以降の問題ですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問