phpMyAdminにアクセス拒否された時の対処法(を探してます)

#phpMyAdminアクセスエラーに苦戦
プログラミング初心者なので、Udemyでphp／MySQL講座を学習中にphpMyAdminにアクセスを試みたところ、アクセス拒否、色々と対策を探した道のりをメモせず場当たり的になってしまっていたので、再度メモしながらやりたいと思います。

なお、本日時点（2021年2月27日）で対処方法が分からないので、実況中継的に更新していきます。

##これ何？（HY000/1045） ： Access denied

対処法を探しているところなので、タイムリーにメモをアップロードしていきます。
同じ処理を繰り返して無限ループしないように、ログとして。
早く解決したい。

あまり関係ないですが、Udemyで「PHP+MySQL（MariaDB） Webサーバーサイドプログラミング入門」を学習中に躓き、解決できない状態ですでに2日かけてしまってます。
（「39.MySQLを使ってみよう」の中でphpMyAdminにアクセスが必要になりました。）

##環境
MacBook Pro (13-inch, 2017)
macOS Big Sur (Version11.1)
Homebrew 3.0.2
MySQL 8.0.23 
MAMP6.3　※アプリはProではなく無料版を使用
VScode　1.53.2

##エラー発生の順序
一連のアプリはインストール済みです。

1.MAMPアプリを起動し、「WebStart」からMAMP公式サイトに移動
2.MAMP公式サイト　MySQLを展開
3.You can administer your MySQL databases with ```phpMyAdmin```(リンク）からphpMyAdminを開く
4.エラー発生

```エラー＠phpMyAdminリンク先ページ.
Error
MySQL said:Documentation

Cannot connect: invalid settings.
mysqli_real_connect(): (HY000/1045): Access denied for user 'root'@'localhost' (using password: YES)
phpMyAdmin tried to connect to the MySQL server, and the server rejected the connection. You should check the host, username and password in your configuration and make sure that they correspond to the information given by the administrator of the MySQL server.
```
学習が全く進まなくて困ったので、ググりながら一つ一つ原因っぽいものを確認し、潰していきます。

##原因と対策

###原因候補1.MySQLが起動していない？もしくは起動できない？
ターミナルからMySQLを起動してみます。

```terminal.
-> % mysql -u root -p
Enter password: 
```
問題なく起動できた。

```結果.
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 42
Server version: 8.0.23 
```

###原因候補2.パスワードが間違ってる？
一つ一つ手順を追っていきます。
####①MySQLユーザーを確認
```MySQL.terminal
>mysql SELECT Host, User FROM mysql.user;
+-----------+------------------+
| Host      | User             |
+-----------+------------------+
| localhost | ***              |
| localhost | mysql.infoschema |
| localhost | mysql.session    |
| localhost | mysql.sys        |
| localhost | root             |
+-----------+------------------+
5 rows in set (0.00 sec)
```

####②パスワードかけてたかな、、mysql.userのパスワードハッシュを取得
```MySQL.terminal
mysql> SELECT Host, User, authentication_string FROM mysql.user;
```
結果に```authentication_string```カラムが追加され、
パスワードがしっかりかかってル事がわかりました。
パスワード変更などしていないので、phpMyAdminにはまだログインできず。

####③権限がどうなってるのか、一応確認してみる
```MySQL.terminal
SHOW GRANTS FOR root@localhost;
```
全権限がroot＠localhostにありそうなことはわかりました。たぶん。
ただ、これも設定を何も変更していないのでログインできず。

*パスワードハッシュ：ユーザーごとに設定してあるパスワードにハッシュ関数を適用してハッシュ値にしたものになります。

###原因候補3．なぜかMAMP記載のパスワードがrootになってる
root@localhostには別のパスワードを設定しているはずだけど、MAMP公式サイトではパスワードが```root```になっている。これは何かおかしそうなのでとにかく変更してみる。

パスワードを変更するには```config.inc.php```というファイルにアクセスする必要があるようです。

####①config.inc.phpを探す
このパス```/Applications/MAMP/bin/phpMyAdmin/config.inc.php```で辿り着けました。

####②パスワード変更
ファイルを開いて、パスワードの記載箇所を検索```(Command+F)```で```password```と入力すると、ありました、僕の場合は中身を何もいじっていないファイルの92行目に見つかりました。

```config.inc.php
$cfg['Servers'][$i]['password']      = 'root';   
```
やっぱ```root```になっとるやんけ・・・
ということで早速変更してみよう。アクセスできるかな。
上記の```root```をroot@localhostのパスワードに変更します。
####③MAMPサイトからphpMyAdminにリトライ
あれ？
MAMPサイトから↓が消えて、
*”You can administer your MySQL databases with ```phpMyAdmin```(リンク）"*

代わりに↓が表示され、リンクすらなくなってしまった。MySQLは確かに動いてるのになぜ？
*"You can administer your MySQL databases with ```phpMyAdmin (MySQL server not running）```."*

####④一旦MySQLを停止して、phpMyAdminに再アクセスしてみる
パスワードをrootに戻し、

```config.inc.php
$cfg['Servers'][$i]['password']      = 'root';   
```
ターミナルからbrewコマンドでMySQLを停止

```terminal.
% brew services stop mysql@5.7
```
この状態では、MAMPページにリンク表示されるものの、リンク先は変わらず```（HY000/1045） ： Access denied```が表示されている。

####⑤試しにMySQLを停止したまま、パスワードだけを変えてトライしてみる
再度↓のパスワード（'root')をroot@localhostのパスワードに変更し、

```config.inc.php
$cfg['Servers'][$i]['password']      = 'root';   
```
MAMPサイトをみてみると、↓のリンクがちゃんと出ている！！
*You can administer your MySQL databases with ```phpMyAdmin```(リンク）*
ということで、無事にphpMyAdminにアクセスできました！！

###無事、アクセスできました。
phpMyAdminの使い方はまだわかりませんが、ようやく進められます！
原因は分からず、、、ですが、対策は```MySQL停止→パスワード変更→アクセス```という手順を踏んで、アクセスできました。
根本的な原因解決ができていないので心配ですが、とりあえず進められそうで・・・
ほんとよかったわ。

##↑では、解決してませんでした。
原因候補③の対策後、設定を変えずにMAMPサイトに戻ったところ、アクセスリンクが消えていて再アクセスできない状態になっていました。

これ↓が、
*You can administer your MySQL databases with ```phpMyAdmin```(リンク）*
こう。↓
*"You can administer your MySQL databases with ```phpMyAdmin (MySQL server not running）```."*

また原因と対策探しをしていきたいと思います。

###続・原因と対策

####原因候補4｡また追記します。