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;
あとは、ちゃんと設定したパスワードでログイン確認して、
本日のミッション完了、してないけれどね、なんだかちょっと成長した気がします。
この達成感。これがあるからやめられません。
お疲れさまでした