MySQLでサーバー「localhost」でrootのパスワードの設定でエラーERROR 1348 、1372、4000と格闘した奮闘記

MySQLでサーバー「localhost」でrootのパスワードの設定でエラーERROR 1348 、1372、4000と格闘した奮闘記です。奮闘記の前に、
ここまで辿り着いたということは、xamppのrootホストのパスワードを初期設定するか、パスワード変更に悩んでる人だと思いますので、2022年7末時点で私が成功した方法も記しておきます。

コマンドプロンプトからログイン

まず、インストール後はパスワードなしなので、MySQLのあるフォルダパスまで移動した状態で、MySQLを立ち上げる以下コードを入力

mysql -b -u root -p

そしたら、パスワードを聞かれますので、何も入力せずエンターを押すと、ログインできます。

そしたらパスワード設定するための以下を、1行づつ入力します。

MySQLのパスワード変更のソースコード

flush privileges;
ALTER USER’root’ @’localhost’ IDENTIFIED BY ‘ 設定したいPW ‘;
flush privileges;

3行とも、入力後に「Query OK, 0 rows affected (0.001 sec)」と表示されたら
パスワード変更、登録完了です。

さて、ここから、それまでの奮闘記。

エラー奮闘記

本日、やっとSQLへ挑戦することになりました。
仕事の関係上、自宅PCでxamppのSQL操作環境を整えないといけなくなりました。

MySQLへログインしようとしたところ、
パスワード入力をいきなり要求されました。

知らないよ!いま、インストールしたばかりなのですが?
設定してないよあああ

と、ぐぐりましたら、どうやらパスワードが入っているファイルがあるらしいのですが、
ホストうんちゃら、とか。難しく内容がずらああと書いてあるサイトとかで。
心が折れそうになりました

多分、わかりやすく書いてると思うのですが、SQL初級者の1日目の私にはさっぱり意味がわかりません。
https://beyondjapan.com/blog/2020/07/mysql-password/

で、これじゃあ本来の目的の業務が進まないので、
しぶしぶ、今働いているITスクールの他の講師の方へ問い合わせたら、なんと、
何も入力せず、エンターを押してみて、と

ググって調べて、とも言われましたが
ここまで辿り着くにもすでに1時間使っております。

とりあえず、エンターを押してみました。

入れました。

なんだったんだ。これまでパスワードのありかを探した時間は。
無いものを探していたとは><

ですが、このままだと、セキュリティとしてよくない、はず

設定したい

で、どうやるの??

そして、すぐにでてくる、MySQL公式サイト

読む気がうせるね。1行目からわからない。

もっとわかりやすいサイトがあるはずだ!!

すがる思いで、あきらめずにググり続けますと、
どうやら、これが良いぞと、いくつかのサイトがおすすめしている、こちらのSQL文を発見。

これ

試してみたこと その1

update user set password=PASSWORD(‘設定したいPW’) where User=’root’;

とりあえず、試してみると、

ERROR 1348 (HY000): Column ‘Password’ is not updatable

という、ざっくりとした、エラー

本命のやつが、はじかれました。

試してみたこと その2

ダブルコーテーションをシングルに変えたりもして、
やってみたけど、だめ

ふふふ

試してみたこと その3

ログイン方法をちょっと変えてみるか、と、
オールマイティなやつでログインして、参考https://qiita.com/ksugawara61/items/d8d69b7d57a3afcef980
再挑戦

mysql -u root

これで、いったんログインして、
さっきのSQL文を実行。

そしたら、これ。

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

グーグル翻訳すると、

エラー1372(HY000):パスワードハッシュは41桁の16進数である必要があります

そんな馬鹿な!!!

16進数のパスワード!?
2進数すらわからんし、41桁ってなんだ!!

絶対にうそだ。そうに違いない。そうであってほしい。

試してみたみたこと その4

そう思いまして、
さらに、違う方法をぐぐりました

探しながら、

どこかの誰か「古いSQL文はだめだよ、これやってみな」

と、2020年に回答しているQAをみて、
こちらを案内していたので、さっそくやってみた。

set password for root@localhost=’設定したいPW’;

そして、結果がこれ

ERROR 1372 (HY000): Password hash should be a 41-digit hexadecimal number

最新っぽい回答だったのですが。

もうだめなのか。

もう、日本語サイトは探しつくした気がしたので、
今度は英語サイトも翻訳しつつ探しますと、2019年に記録されたサイトを発見。

さっきの回答より古いぞ

けど、

だめもとで、やってみる

ALTER USER’root’ @’localhost’ IDENTIFIED BY ‘設定したいPW’;

なんと!成功・・・か?!

いつものエラー番号でないよ

Query OK, 0 rows affected (0.47 sec)

おおおおおおOKじゃない?

で、ちゃんと、その後の定型文も送って、

mysql> flush privileges;

あとは、ちゃんと設定したパスワードでログイン確認して、
本日のミッション完了、してないけれどね、なんだかちょっと成長した気がします。

この達成感。これがあるからやめられません。

お疲れさまでした

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です