起こったこと
xmappでApacheとMySQLを起動してさてphpmyadmin/index.htmlにアクセスすると
以下みたいなエラーが出てログイン画面すら出ない状態になっていました。
今回行った対応を順に書いていきます。
※この記事ではrootユーザでのログインを行っているが実際の運用ではrootユーザではなく別のユーザを別途定義した方が無難。
ログイン画面を出す
デフォルトでxmappをインストールした場合、C:\xampp\phpMyAdmin\配下にconfig.inc.phpが置いてあります。
今回はその中の一部を編集する。config.inc.phpを開き、以下の項目があることを確認してください。
何も編集していない状態であればおそらく下記のような状態になっているかと思われます。(これとは違う場合もあるかもしれない)
/* Authentication type and info */
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
$cfg['Lang'] = '';
/* Bind to the localhost ipv4 address and tcp */
$cfg['Servers'][$i]['host'] = '127.0.0.1';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
/* User for advanced features */
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = '';
$cfg['Servers'][$i]['auth_type']
は認証モードの設定でデフォルトではconfigとなっています。これをcookieと変更してください。これによって有効なMySQLユーザーをログイン画面で入力すればログインできるはずです。ついでに$cfg['Servers'][$i]['user'] = 'root';
はcookieでは不要なので空文字にしてください。
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
(HY000/2002): 対象のコンピューターによって拒否されたため、接続できませんでした。の対処
前述の設定をしたconfig.inc.phpを保存し、phpmyadminのページをリロードするとログイン画面が表示されるかと思います。
あらかじめ設定したrootユーザでログイン……、がっダメ!
ここで小一時間詰まってしまいました。原因はおそらくhostの項目でローカルのipアドレス127.0.0.1になっているからかなと思いlocalhostに変更したりしましたが一向に解決せず。
そんな時下記の質問記事を発見しました。
xampp phpmyadmin access denied error(#2002)
どうやら、localhost:MySQLのポート番号(デフォルトでは3306?)
と記載しないといけなかったみたいです。つまり下記のように直すということですね。
※筆者のMySqlのポート番号は3306です。自分の環境に合わせたポート番号に変更してください。
/* Bind to the localhost ipv4 address and tcp */
$cfg['Servers'][$i]['host'] = 'localhost:3306';
config.inc.phpを保存し、IDとパスを入力してログイン…。成功!
所感
ポート番号込みで定義しないといけないというのは盲点でしたが当たり前ですね…。
とりあえずphpmyadmiにはアクセスできたので、この後は別途ユーザを作成し、
rootユーザのアクセスを制限しておく必要があるかと思います。
振り返れば簡単なことなのですがこれ調べるだけで半日終わっちゃって本来の勉強が進まない…。