Skip to content

Japan Products 29

Blog written about Japanese hobby products by a Japanese

  • Hobby shop
  • Blog
  • Products
  • Marketing
  • Programming
    • Java
    • Home
    • JavaServlet
    • MACターミナル
    • エラーメッセージ
    • html
    • TOMCAT
  • English
  • Company URL (Japanese)
  • Toggle search form

苦しみながらJava ServletでMSQLを接続する (MAC環境) M1チップのおかげで散々悩まされる (解決済)

Posted on 2021年12月7日2022年4月15日 By Yu No Comments on 苦しみながらJava ServletでMSQLを接続する (MAC環境) M1チップのおかげで散々悩まされる (解決済)

目次

      • 0.0.1 参考にしたサイト
  • 1 MSQLのサイトからJDBCドライバをダウンロードする
  • 2 MSQLをインストール
    • 2.1 Homebrewをインストール
    • 2.2 MSQLをインストール
    • 2.3 Homebrewがインストールされているか確認する
      • 2.3.1 そもそもHomebrewのパスが通っていない可能性を考える
      • 2.3.2 CPUがM1の場合はターミナルをRossetaに変更する。
      • 2.3.3 Homebrewを一旦アンインストールする
      • 2.3.4 再度brewをインストール
      • 2.3.5 brewのパスを通す作業
    • 2.4 再度MYSQLをターミナルからインストールする
      • 2.4.1 Brewのパスを再度通してmysqlのバージョン情報を確認する
      • 2.4.2 Mysqlに接続を試みるもエラーが出る
      • 2.4.3 もう打つ手がないのでMYSQLのアンインストール
  • 3 MSQLとサーブレットを接続させる
    • 3.1 JDBCドライバをサーブレットでロードする
      • 3.1.1 JDBCドライバがlibファイルに格納されていることを確認する
      • 3.1.2 ともかくJDBCをロードしてみる
    • 3.2 データベースへの接続
      • 3.2.1 データベースを用意する
      • 3.2.2 データベースの接続テスト

参考にしたサイト

  • Java Servlet を使ってデータベースに接続する Part 1
  • memo
  • Mac環境にMySQLをインストールしてみよう!初期設定までの手順を徹底解説!
  • Mac へ MySQL を Homebrew でインストールする手順
  • brew|command not foundコマンドが見つかりませんの対処
  • https://qiita.com/miriwo/items/67681165b0a89218ee61
  • 【M1】MacにHomebrwがインストールできない「zsh: command not found: brew」
  • Homebrew
  • Homebrewをアンインストールする手順
  • Homebrewインストール時に「/opt/homebrew/bin is not in your PATH」が発生した際の解決方法
  • mysqlが起動できない(Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2))
  • mysql起動時でエラーが起きた時の対処
  • mysqlがどうしても起動しない
  • データベースへの接続と切断
  • JDBCドライバのロード
  • サーブレットから JDBC を利用する
  • ど素人のJava入門(サーブレット編)
  • データを追加する(INSERT文)
  • MySQLで、カラムを一覧表示するコマンド
  • データを取得する(SELECT文)
  • データベースの接続テスト
  • DB接続クラスのエラーについて
  • MySQLをインストール後、ユーザーを作成するまでの手順
  • MySQLで新しいユーザーを作成して権限を付与する方法

MSQLのサイトからJDBCドライバをダウンロードする

このサイトからJDBCドライバをダウンロードする

“Platform Independent”を選択しダウンロード

ファイルを解凍して”mysql-connector-java-8.0.27.jar”をEclipseにぶち込む

Finderからアプリケーション→Ecplice→contents→tomcat→バージョン→libに”mysql-connector-java-8.0.27.jar”を入れる。

MSQLをインストール

Homebrewをインストール

/bin/bash -c “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)”

ターミナルにこのコードを貼り付ける。

ターミナルからインストールする。

MSQLをインストール

ターミナルに以下のコードを打ち込む

$brew install mysql

以下のコードをターミナルに打ち込んでmsql情報を確認する

$brew info mysql

これはうまくMYSQLをインストールできたんだろうか? MSQLのバージョン情報もないし。失敗かな。。。。?

とりあえず、以下のコードでMYSQLをスタートしてみる。

$mysql.server start

やっぱりMYSQLはインストールされとらんかったわ。

もう一度試してもダメだったわ。ってかこのサイトの情報、7年前のやつやわ。 

これはちょっと信頼できないな。別のサイトを探るか。このQiitaは検索トップに出てくるから反射的にリンクをクリックしてしまうんやが、記事の作成年月日も確認せなあかんね。

Homebrewがインストールされているか確認する

そもそもHOMEBREWがインストールされているか先確認する

$brew –version

とりあえず、これをターミナルに打ち込んでインストールされているか確かめる。

これはインストールされてないんかな。。。?

このサイトによると

インストールできたら以下のように-vオプションでコマンドが使えるか確認できます。

らしいので以下のコマンドをターミナルで実行

$ brew -v

結果、、、

・・・・なんでやー なんでやねん!! 腹立つわー

そもそもHomebrewのパスが通っていない可能性を考える

インストールしても使えない場合、パスが通っていない可能性を考えて以下のコードをターミナルに打ち込む

$ ls /usr/local/bin/brew
/usr/local/bin/brew

そんなディレクトリーはないと返されました。これはもう一回インストールし直さなあかんかな。でも一回目のインストールデータが残っているかもしれないからな

次はこのサイトを参考にしてみる

このサイトによると以下のコマンドをターミナルに打ち込んでパスを通すのだと。。。

$ echo export PATH=’/usr/local/bin:$PATH’ >> ~/.bash_profile

だめだうんともすんとも言わん。改めてインストールし直したほうがいいのかな

さて、今度はこのサイトによると、

最新のMacBookのCPUにはApple社が開発した「M1」と言うモノを使っているみたいで、この「M1」が原因でMacにHomebrwがインストールできないみたいです。

なるほど。。。。って早よゆうてくれや。ほんまにこの作業どんだけ時間つこーてると思うとんねん。。

まじだった。。。。

CPUがM1の場合はターミナルをRossetaに変更する。

CPUがM1だった場合、ターミナルの設定を、Rossetaを使用して開くに変更しないと、Homebrewはインストールができません。

ということでFindeからターミナルを検索し、アイコンを右クリック、”情報を見る”を選択。

こいつが現れるから、”Rosseta使用で開く”を選択

Homebrewのホームページに記載してあるコマンドラインをターミナルに貼り付ける。

一応インストールは成功と書いてあるが。本当にインストールされているのか確認してみる。

brew -v

これを打ち込んでみる

何がいかんのやろうか?

とりあえずbrewをアンインストールして再度インストールを試みる。

Homebrewを一旦アンインストールする

参考にしたのはこのサイト

以下のコードをターミナルに貼り付けてアンインストール

$ ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/uninstall)”

はて? ”command not found”と出る。

rubyの前の”$”いらなかったわ

なんとかうまくいった模様。。。 これでもう一回インストールしよう。

再度brewをインストール

一応再インストールしたが、ターミナル中央のwarningこれが何なのか気になる。。。。

なんだかここに問題がありそうだ。おそらくはパスが通ってないから、前回と同じようにインスタレーションをターミナルで確認しても”not found”で返されるんじゃないか? とりあえずこれを解決しなければ。。。

brewのパスを通す作業

今度はこのサイトを参考に解決していこうと思う。

export PATH=”$PATH:/opt/homebrew/bin”

これをターミナルに打ち込み実行する。

やっとうまくインストールできた。。。 時間がめっちゃかかったわ。。。さてと、次はMYSQLのインストールだ。

再度MYSQLをターミナルからインストールする

  • brew update
  • brew install mysql

これをターミナルに打ち込んで実行する。

どうやらインストールに成功したようだ。

バージョンを確認すると

バージョン情報が出ない。意味がわからない。本当にクソだなマジで どうなってるんや? 

Brewのパスを再度通してmysqlのバージョン情報を確認する

ふと閃いて、Brewのパスを再度通してmysqlのバージョン情報を確認すると、インストールしたMYSQLのバージョン情報が出てきた。本当になんなんだよ!!!

MYSQLに接続するときはいちいちこのパスを通さなきゃならんらしい。本当になんなんだこのM1チップはマジで、性能はいいかもしれんが全然互換性がないやろ 全くアップルはなぜ発売するどのハードウェアも互換性がないもん作るんだ?ああ?お前ら技術の発展より競争優位性を保つほうを優先的に考えてるんか? マジでなんとかしろや!!!あーマジでイラつく

Mysqlに接続を試みるもエラーが出る

プログラミングって本当に問題ばっかりや。一難去ってまた一難が延々とつづく。スムーズにいくことなんて全くないな。本当にエラーとの格闘やマジで。MYSQLの設定だけでどれだけ時間がかかるんや。windowsだったら良かったのかもしれんけどな。 本当につくづくMACは互換背が無さすぎると感じる。

でこんなエラーが返された


Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2)

そんで、このサイトで解決法を探ってみた。

mysqlサーバーに接続する際、mysql.sockファイルを使って接続するらしいのですが、
なんらかの原因により、このファイルが消えることがあるそうです。
エラー文で指定されているところに、mysql.sockファイルを作成します。

ということでターミナルからmysqlを動かすために新たにファイルを作成する。


$ sudo touch /tmp/mysql.sock

このコードをターミナルに打ち込んでみる。

まだエラーが返される。

今度はこのサイトを参考に原因を探っていく。

サーバーが起動してない可能性を考え以下のコードをターミナルに打ち込む


 sudo touch /tmp/mysql.sock

このサイトと同じエラーが返される。ということで,このディレクトリを確認したところ,pidファイルが
見当たらなかったらしい。以下のコードをターミナルに打ち込み再度起動できるか試みる


sudo touch XXXX.local.pid

まだダメらしい、結局このサイトの情報では解決しなかったな。

もう打つ手がないのでMYSQLのアンインストール

このサイトを参考にする。


brew uninstall mysql

アンインストールして再びインストール


brew install mysql

なんかうまくいったわ。。。。 最初からアンインストールしとけば良かった。。。

終わった。。。。 疲れた。 また今度記事更新しよう

MSQLとサーブレットを接続させる

このサイト
“データベースへの接続と切断”
を利用してサーブレットとmysqlの接続を確立させる。

JSBDコネクタは一番最初の段階でダウンロード、解凍しTomcatのlibファイルに格納した。

JDBCドライバをサーブレットでロードする

JDBCドライバをロードすると、java.sql.DriverManagerクラスに利用可能なドライバとして登録されます。そしてデータベースへ接続するにはDriverManagerに接続しようとするデータベースの情報を指定し接続を行います。

ん?JSBDドライバーをロードしなきゃいけないのか。ファイルに格納するだけじゃダメなのか。。。。

ってことでこのサイトを参考にする
JDBCドライバのロード

まずサーブレットのコードを書く前にJDBCドライバがlibファイルに格納されているか確認する。

JDBCドライバがlibファイルに格納されていることを確認する

libファイルの配下にJDBCのドライバがない!

Tomcatのファイルの配下のlibファイルに設置すれば自動的にworkplaceにファイルが配置されているものだと思ったが、違うのか?

このサイト”サーブレットから JDBC を利用する“によると

サーブレットの場合、 ドライバーを配置するのは WEB-INF/lib 以下です。
ここに必要な JDBC ドライバーの jar ファイルを配置しておけば、必要に応じてそれを自動的に参照することができます。

んんん? WEB-INF/libに手動でファイルを貼り付けるということか? じゃあサーバーのlibファイルに配置したJDBCファイルはなんだったんだ?

このサイトによると
ど素人のJava入門(サーブレット編)

手動でJDBCファイルをWEB-INF/libにペーストする旨のことが書いてある。

ダイレクトにworkspaceに貼り付けるのかサーバーのファイルの配下に置くのか ようわからん。 とりあえずサーブレットのコードを書いてロードしてみる

ともかくJDBCをロードしてみる

サーブレットのコードとxmlファイルを用意して実行

なんかうまくいったみたい。

最初このfornameの後のパスが通ってないと思って、絶対にエラーになるから、JDBCファイルの場所を色々確認してたんだが、なんか杞憂に終わったな。あっさり通ってた。

データベースへの接続

データベースを用意する

社員名と社員コードを表示させるデータベースを作る

データベースとテーブルを設置後、カラムのなかに”INSERT文”を使ってデータを入れていく。


insert into “テーブル名” values (1, ‘Yamada’, ‘Tokyo’);

データベースのテーブルのデータを確認する


SELECT * FROM テーブル名;

これでデータベースの準備は完了。

データベースの接続テスト

Servletにソースコードを書いて実行したが、404のエラーが出る。どこかのパスが通ってない可能性がある

気になったのはこの部分

DriveManagerのgetConnectionメソッドを呼び出すと気にurl,ユーザー名、パスワードが必要になるんだが、自分のMysqlではパスワードは設定しておらず、userのrootだけでmysqlに接続できるような状態になっている。この部分をどうするかだ。

passwordだけ外すとuserのところに赤い点線が入るから、urlだけで実行してもいいんかな

とりあえず間違いを発見した。xmlのクラス名が間違っていたのでそこを直す。そんでDriverManager.getConnectionのところはとりあえずurlだけ入れて実行してみる。

こんなん返ってきました。

ユーザー名と自分のパソコンのpasswordを再設定してもう一回トライ

若干、メッセージは異なるもののJDBLのロードは成功したものの、mysqlには未だ接続できない。

このエラーについてこのサイト、“DB接続クラスのエラーについて”で原因を探ってみたら、

root@127.0.0.1に対して権限を与えればログインできると思います。
コマンドとJDBCで接続方式が違うので認証エラーになっています。
mysql -u root -p はソケット接続でJDBCはTCP/IP接続なので認証ホストの扱いが異なります。
以下のコマンドで接続できるように設定すればJDBCでもうまくいきますよ。

どうやらJDBCとmysqlでは接続方式が違うから権限を与えなければならないらしい。

ということで、


GRANT ALL PRIVILEGES ON データベース名.* TO root@127.0.0.1;

これをターミナルに打ち込む。

よくわからん。 


CREATE USER ‘newuser’@’localhost’ IDENTIFIED BY ‘password’;

これで新たにユーザーを作る


GRANT ALL PRIVILEGES ON * . * TO ‘newuser’@’localhost’;

権限を与える

再度サーブレットを動かしてみる

やっとうまくいった。。。ここまで相当時間がかかったわ。本当に問題続きで辟易してる。

JavaServlet, MSQL, Programming

Post navigation

Previous Post: ログインフォームのページを作成時に404のエラー (解決済み)
Next Post: プログラミングコードをHTMLに表示させるためのタグ

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

About

Hi! My name is Yu! I'm a Japanese exporter,dealing with rescue products, knick-knacks. This time, I've decided to sell Japanese hobby products overseas. In this blog, I'm just going to post what I am interested in as soon as I find. This blog is one of my activities to forcast demand of Japanese hobby products overseas.

Instagram

…

Recent Posts

  • Yokohama Camera right in front of Yokohama station (plastic model specialty shop)
  • BOOK-OFF SUPER BAZAAR OFUNA (Kanagawa pref Japan)
  • Hobby-off Fujisawa (Kanagawa pref Japan)
  • Surugaya, Yokohama Marui (Kanagawa pref Japan)
  • Finding products is my current job

Category

  • English
  • Marketing
  • Products
    • Japanese Hobby Shops
  • Programming
    • html
    • Java
    • JavaServlet
    • MACターミナル
    • MSQL
    • Spring-Boot
    • TOMCAT
    • エラーメッセージ

Archives

  • April 2022 (5)
  • January 2022 (1)
  • December 2021 (32)
  • March 2021 (1)
Company Information

Copyright © 2025 Japan Products 29.

Powered by PressBook WordPress theme