はじめに
今回は、phpMyAdminの画面にある管理ユーザーで、デフォルトで入っている「root」と言うユーザーがあるのですが、そのユーザーの設定をphpMyAdminの画面側からパスワード設定を「なし」にチェックしたらエラー表示と共にphpMyAdminにアクセスできなくなった話とphpMyAdminの仕組みを解説しつつ、解決方法について説明してみます。
自分はプログラミング初心者なので、初心者なりの解釈のもと進めておりますので、説明が拙い部分もあると思いますが、参考になれば幸いです。
rootユーザーのパスワードが無いのは致命的!
普通は、rootユーザーのパスワード無しにすること自体、ダメだと思うんですが、自分はターミナル操作でのMySQLの勉強の中で、phpMyAdmin側での操作が気になり、試しにphpMyAdminの画面からrootユーザーのパスワードを「なし」と設定したところ、今回のような問題になったわけです^^;
ただ、phpMyAdminがどのように動いてるのかが少し見えたので、良い失敗経験だったと思いました٩( ‘ω’ )و
実際にはrootと言うユーザーは、どの権限も持っている重要なユーザーとしてよく扱われていますので、基本的に自分のローカル環境内でやりましょう!
開発環境
phpMyAdmin バージョン:4.9.0.1
PHP バージョン:7.3.8
サーバのバージョン: 5.7.26 – MySQL Community Server (GPL)
phpMyAdminとMySQLの関係(個人的な大まかな解釈)
phpmyAdminは、GUI操作(マウス操作)で画面からMySQLに指令(クエリ)を出していると自分はざっくりと解釈しております。MySQLにログインするのをphpMyAdminが行ってくれていて、ユーザーとMySQLとの中継を行っていると考えています。
もちろん、ターミナルを使ってコマンド入力による操作(CUI操作)でも同じようにMySQLに直接ログインして指示も出せます。(DB作ったり、テーブル作ったり…etc)
エラーが起きるまでの過程
今回の原因を改めて確認します。
phpMyAdminのホーム画面から見ると上に並んでいる欄の中に「ユーザーアカウント」と言う欄があります。
ここをクリックすると以下のような画面が表示されます。
そして、「root」と言うものがデフォルトで3つ用意されています。
このうち、赤い枠のアカウント(ホスト名がlocalhostとなっているもの)がローカル環境内で使えるrootユーザーらしい(sampleと言うユーザーを作ったところホスト名がlocalhostだったので、同じ扱いのrootユーザーは赤枠の物であると判断しました。)ので、このrootユーザーのパスワード設定を「無し」にチェックを入れて「実行」したところ、赤いエラー表示と共に画面が切り替えられなくなり、
ページを再読み込みすると「アクセス拒否」と赤いエラーが出てphpMyAdminにログインできなくなりました。
原因を分析
現状としては、phpMyAdminでパスワード設定を「なし」にして実行をした結果アクセスできなくなってしまったので、実行したところまでは判定されていると考えました。
なので、まずはMySQL側にその指示が伝わっているのかを確認してみます。
phpMyAdmin→MySQLへの指示は反映されている?
phpMyAdminで元々、パスワードが「ある状態」から「無しの状態」にしているので、直接ターミナルからアクセスできるかどうか試しました。ターミナルに以下のように入力してMySQLにログインします。
$ mysql -u root
ログインできれば以下のような表示が返ってきます。
Welcome〜と出ましたのでログイン成功です。(°▽°)!
つまり、パスワード無しと言う指示はMySQL側に反映されています。
ここからターミナルでMySQLコマンドを扱っていきます。
「MySQLコマンド」、「MySQL rootユーザーパスワード設定」とかでググると色々な情報が出てきますよ!
参考までに載せておきますね(^^)
【MySQL, SQL】データベースを扱う基本SQL一覧
https://qiita.com/knife0125/items/bb095a85d1a5d3c8f706
MySQLでユーザーを作成する方法【初心者向け】
https://techacademy.jp/magazine/5110
ターミナルからパスワードの再設定
ログインできたので、ひとまずターミナル側からパスワードを設定するために以下を入力します。
(最初の「mysql>」の部分はいりません。「update~」の部分を入力してくださいね!MySQLにログインした状態で入力していることを表すためにあえて入れています。)
mysql> update mysql.user set authentication_string = password('root') where user = 'root';
=のあとのpassword(’root’)とありますがここには、設定したいパスワードを入れてください!(自分の場合はrootとしたのでこの場合で説明を進めます。)
確認のために、一度以下をターミナルで入力してMySQLからログアウトします。
mysql> exit;
そして、先ほど設定したパスワードでもう一度ログインしてみます。以下のように入力します。
$ mysql -u root -p
次にパスワードを求められるので、入力してEnterキーを押します。(この時、パスワードはみえない状態ですが押したキーは認識しています。)
すると、以下のようなエラーが出ました。
設定がうまくいっていないのか、少しわかりませんが、
一度MAMPを切り、もう一度起動し直して同じようにログインすると今度はうまくパスワード入力してログインできました。
これで、phpMyAdminからパスワード無しの指示が実行されていたのを、ターミナルからパスワードを再設定してパスワードが有る状態にすることができました。
phpmyAdminはMySQLとリンクしている訳ではなかった
これで、phpMyAdminも問題なく動くかな?と思い、画面を見てみると以下のようなエラー画面になっていました。
あれれ? MySQL自体はうまくターミナルからログインできるのにエラーが出ます。
実はphpMyAdminは、config.inc.php (ディレクトリは以下参照)というファイルを
(/Applications/MAMP/bin/phpMyAdmin/config.inc.php )
読み込んで、その情報とMySQL側の情報が一致しているか確認しているようです。
なので、お使いのエディタでこのファイルを開きます。
かなり、ズラーと色々な情報が書いてありますが、86〜87行目付近に以下のような記述が有ると思います。
$cfg['Servers'][$i]['user'] = 'root'; // MySQL user
$cfg['Servers'][$i]['password'] = 'ここに何も入力されていない'; // MySQL password (only needed
デフォルトの状態だと「[‘password’] = の後ろの”の中」に記述がないか何か別のものが入っていると思われます。
phpMyAdminは、ここのユーザー名とパスワードが先ほどターミナルから設定したMySQLのユーザーとパスワードが一致していないとphpMyAdminからMySQLへアクセスできないらしいです。
また、phpMyAdminはここの部分にパスワードがないことを認めていないようです。そのせいでphpMyAdminの画面にあのようなエラーが出ています。
なので、エディタで直接記述して編集します。
$cfg['Servers'][$i]['password'] = 'ターミナルで設定したパスワード'; // MySQL password (only needed
先ほどのパスワードの記述の”に何も入ってなかったのでここにターミナルで設定したrootユーザーのパスワードを入力します。
そして、ファイルを保存します。
これでもう一度phpMyAdminのページを再読み込みしてみます。
無事ログインできました!٩( ‘ω’ )و よかった〜!笑
※上手くいかないときは、MAMPをまた再起動してみてください!
まとめ
phpMyAdminからMySQLを操作する場合の流れはこんな感じなのかなと大まかにまとめてみました。
phpMyAdminを経由したMySQLの操作と流れ
- MAMP起動
- phpMyAdmin開く
- phpMyAdminが「config.inc.php」というユーザー情報とMySQLのユーザー情報を確認
- phpMyAdminの画面が出てくる(phpMyAdminにログイン成功)
- phpMyAdminからSQL文で操作MySQLに指示
- MySQLに反映
ただし、管理者のユーザー情報に関してはMySQL側に変更は反映できるが、パスワードを変更した場合、config.inc.phpの中身は変更が反映されないので、直接編集する必要があります。
今回の問題は、色々な要因が絡み合っていたせいで中々解決できず苦労しました^^;
初心者的には、phpMyAdminでエラー出ると焦りますよね…泣
仕組みを大まかに理解しておくと、何か起きても慌てずに対処できると思いますので、この記事が少しでも役になったら幸いです!参考にした記事も以下に載せておきます。
では、また!
rootのパスワード設定後にphpMyAdminのログインに関する設定を行う
https://www.adminweb.jp/xampp/mysql/index3.html
phpMyAdminのパスワード設定
https://immature.01kawa.com/database/phpmyadmin/password_setting/
コメント
コメント一覧 (1件)
Reason is the wise mans guide example the fools.