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

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

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

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

JDBC

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

Eclipse

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

Q&A

解決済

2回答

2854閲覧

EclipseとMySQLの接続が出来ない

mimi_129

総合スコア63

MySQL

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

JDBC

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

Eclipse

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

0グッド

0クリップ

投稿2019/06/28 02:19

編集2019/06/28 04:44

前提・実現したいこと

JSP、サーブレットクラスを用いて健康診断のWebアプリケーションを作成したいと考えています。
ターミナル上から「HealthCheckDatas」というデータベースを作りました。
今JSPとサーブレットクラスの連携はできたのですが、それに加えてデータベースの機能も盛り込みたいです。
JDBCとMySQLを組み合わせればできるようなのですが、できません。
MySQLはMAMPで起動しています。

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

Eclipseのパースペックティブ内の「データベース開発」

データベース接続

MySQL

接続確認を行うと「pingが失敗しました」と出ます。

該当のソースコード

イメージ説明
イメージ説明
イメージ説明

試したこと

JDBCドライバはプロジェクト内のWebContent/WEB-INF/lib内にpostgresql-42.2.6.jarを配置しました。

<訂正>
mysql-connector-java-8.0.16.jarをプロジェクトのクラスパスに追加しました。

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

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

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

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

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

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

guest

回答2

0

ベストアンサー

JDBCドライバはプロジェクト内のWebContent/WEB-INF/lib内にpostgresql-42.2.6.jarを配置しました。

postgresql用のjarを配置しているのがまず問題です。

「mysql jdbcドライバ」等で検索し、適切なドライバをダウンロード、配置してください。

追記:MySQLのデフォルトのポート番号は3306ですが、そちらは大丈夫でしょうか

投稿2019/06/28 02:28

編集2019/06/28 02:30
tetutetu

総合スコア419

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

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

m.ts10806

2019/06/28 04:05

ポートについては範囲内で空いているなら基本的にどのポートを利用しても大丈夫だと思います。 あまり3306から離れる数値は慣習的につけられませんけどね・・
mimi_129

2019/06/28 04:07

回答ありがとうございます。MySQL用のドライバーをインストールしました。ドライバーの配置場所はWebContent/WEB-INF/lib内で良いのでしょうか。MySQLのポート番号はデフォルトの値から変更していないのでそのままだと思います・・・。
tetutetu

2019/06/28 05:36 編集

デフォルト値から変更していないのであれば 画像1枚目、URL内のlocalhost:8889~~の部分は localhost:3306なのではないでしょうか…? 追: 8888,8889はMAMPのデフォルトポートだったのですね。 MAMPを利用したことはないので、もしかしたら無知を晒しているかもしれません。 サーブレットとjspの連携はお済みとのことですが サーブレット側ではlocalhost:8889でDBに接続できているのですか?
mimi_129

2019/06/28 05:53 編集

ご丁寧にありがとうございます。。3306にしてもダメでした。。サーブレットとJSPはEclipseでApacheTomcatの8080に連携・接続できています。。
tetutetu

2019/06/28 07:15

うーんと… 質問者様がeclipseで行いたい作業は パースペクティブ「データベース開発」を利用してDBの中身を操作(テーブル作成、レコードの編集等)することですか? それとも、サーブレットからDBにアクセスしたいだけ(DBの中身の操作は他ツールやプロンプトで行う)ですか? 「実現したいこと」を読むと後者にとれるのですが、今質問者様を悩ませている作業は前者になります。 もし後者なのであれば、DBに接続できるかどうかのみを判別するサンプルプログラムでも書いてみます。
mimi_129

2019/06/28 07:30

両方ですね。。。Eclipseでまとめてデータベースの管理もデータベースにアクセスしてデータの抽出も行いたいので。。
tetutetu

2019/06/28 07:41 編集

Windows環境なのでそもそも項目が存在しなかったらすみません pingが失敗した際に詳細が確認できると思うのですが そちらをコピー、張り付けることはできますか? エラーを吐かせるにあたって正しく入力できる箇所は全て入力して、よろしくお願いします。
mimi_129

2019/06/28 07:59

お手数おかけして申し訳ございません。。 データベース名は「database」 URL欄には「jdbc:mysql://localhost:8889/HealthCheckDatas」と ユーザー名は「root」 パスワードは入力した状態で接続のテストを押下しました。 java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:129) at com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97) at com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122) at com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:835) 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:199) at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.createConnection(JDBCConnection.java:328) at org.eclipse.datatools.connectivity.DriverConnectionBase.internalCreateConnection(DriverConnectionBase.java:105) at org.eclipse.datatools.connectivity.DriverConnectionBase.open(DriverConnectionBase.java:54) at org.eclipse.datatools.connectivity.drivers.jdbc.JDBCConnection.open(JDBCConnection.java:96) at org.eclipse.datatools.enablement.internal.mysql.connection.JDBCMySQLConnectionFactory.createConnection(JDBCMySQLConnectionFactory.java:28) at org.eclipse.datatools.connectivity.internal.ConnectionFactoryProvider.createConnection(ConnectionFactoryProvider.java:83) at org.eclipse.datatools.connectivity.internal.ConnectionProfile.createConnection(ConnectionProfile.java:359) at org.eclipse.datatools.connectivity.ui.PingJob.createTestConnection(PingJob.java:76) at org.eclipse.datatools.connectivity.ui.PingJob.run(PingJob.java:59) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:63)
tetutetu

2019/06/28 08:25 編集

前回の質問の問題が完全に解決していないのが問題かと mysql -u root -proot でログイン後 use mysql; UPDATE user SET authentication_string = ('任意のパスワード') WHERE user = 'root'; の2つを実行してください(パスワードはもちろん質問者様が好きなように設定してください) 実行後は、quitしてから設定したパスワードでログインできるか確認してください その後、ドライバのプロパティ等で入力するパスワードも今設定したものにして、再挑戦してみてください。 失礼しました。自身の環境で試しましたが 上記の方法ではパスワードの再設定はされませんでした。 後ほど編集で削除します。
tetutetu

2019/06/28 08:18

前回の質問の mysqlを停止するコマンドがcommandnotfoundになる件 私はWindowsのため再現性はありませんが 一応解決策らしきものは見つかりました。 ここに書くべきものではないので、前回の質問の返信欄に記載しておきます。 上記の方法で再設定、ログインが行えない場合そちらも参照してみてください。 https://teratail.com/questions/197458
mimi_129

2019/06/28 08:51

解決しました!!!!!!!!!!!!!!ping通りました!!!!!!!!!!!!!!!!!! ご指摘いただいた通りMySQLの方のパスワードの設定が上手くいってなかったようで「SET PASSWORD FOR ユーザ名@ホスト名=password('新しいパスワード');」でパスワードの再設定をし接続のテストを行ったら通りました!!!!!!!!!!!感動です!!!!!!!!!!!!ありがとうございました!!!!!!!
tetutetu

2019/06/28 09:01

pingが通るようになったようで、よかったです…! 後はサーブレット内の記述ですね。 参考までに そもそも mysql -u root -p(改行) Enter password : の欄にパスワードを入力してエラーを返される原因として mysql8.0以降はデフォルトのパスワードの形式が従来と異なることがよくあげられています。 「caching_sha2_password」と「mysql_native_password」 というものなのですが もしよければ調べてみてください。 私はインストール時にcaching_sha2_passwordを使用しない設定にしてしまったのですが、そうしないとユーザを作るたびにその形式で作られることになるのかもしれません。 ↓等が参考になりそうです。 https://yoku0825.blogspot.com/2018/01/mysql-804.html
mimi_129

2019/06/28 09:30

丁寧にお答えいただきありがとうございました。。数日格闘していましたので今日はよく眠れそうです。。 リンク先一読させていただきました。。MySQLの設定周りの理解が本当に浅いので意識してもう少し勉強しようと思います。。
guest

0

PostgreSQLはMySQLとはまた別のデータベースです。
MySQL用のドライバーを導入してください。

投稿2019/06/28 04:02

m.ts10806

総合スコア80850

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

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

mimi_129

2019/06/28 04:07

回答ありがとうございます。MySQL用のドライバーをインストールしました。。。
m.ts10806

2019/06/28 04:09

その後、どうなったのでしょうか
m.ts10806

2019/06/28 04:13

外部jarなのでクラスパスに追加すれば設定完了と思います。
mimi_129

2019/06/28 04:41

プロジェクトのクラスパスに追加しましたmysql-connector-java-8.0.16.jarを追加しましたが以前pingが失敗しましたと出ます。。。データベース開発の新規接続プロファイルに問題があるんですかね、、画像追加しました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問