目次
参考にしたサイト
- 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入門(サーブレット編)
ダイレクトに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’;
権限を与える
再度サーブレットを動かしてみる
やっとうまくいった。。。ここまで相当時間がかかったわ。本当に問題続きで辟易してる。