Windows環境にphpmyadminをインストールする

最近のレンタルサーバーなら管理ページでポチっとボタンひとつでphpmyadminのインストールくらい完了しますし、手動でやるとしても公式サイトからZIPをダウンロードして解凍してアップロードする程度で完了します。

実のところ、ローカルPCでもHeidiSQLがあるのでphpmyadminは特に必要ないのですが、ちょっとレンタルサーバー側にphpmyadminを入れる必要※1が出来まして、先にローカルPCでテストするついでに記事にしておこうと考えた次第です。

phpmyadminとは

MySQL※1をブラウザで操作できる管理ツールで、PHPで開発されているのが特徴です。そのため、MySQLはもちろんのこと、phpmyadmin自体を動かすためにWebサーバーとPHPが必要になります。

当たり前ではありますが、HeidiSQLはそれ単体で動くアプリケーションなので、MySQLさえあればWebサーバーもPHPも必要としません。

この記事で使っているソフトのバージョン情報

  • Windows 10 Pro (Version 1803)
  • nginx 1.14.1 ※3
  • PHP 7.2.11
  • phpMyAdmin 4.8.3
参考記事

phpmyadminをダウンロードして解凍する

phpmyadmin公式サイト

  1. phpmyadminのサイトを開き、右側にある[Download 4.8.3]をクリックしてZIPをダウンロード。 https://www.phpmyadmin.net/
  2. ダウンロードした phpMyAdmin-4.8.3-all-languages.zip を解凍し、任意のディレクトリへコピーする。 例) c:\nginx\html\phpmyadmin\

基本的にはたったこれだけで完了です。

ただし、自分で新規にセットアップした環境だとphp.iniが初期状態のままでphpmyadminには不都合なので修正します。

php.iniを編集して必要な拡張機能を有効にする

phpmyadminはPHPの拡張機能である mbstring と mysqli を必要としますのでphp.iniの下記ハイライト部分のコメントを外して有効にします。

; Notes for Windows environments :
;
; - Many DLL files are located in the extensions/ (PHP 4) or ext/ (PHP 5+)
;   extension folders as well as the separate PECL DLL download (PHP 5+).
;   Be sure to appropriately set the extension_dir directive.
;
extension=ssh2
;extension=bz2
;extension=curl
;extension=fileinfo
;extension=gd2
;extension=gettext
;extension=gmp
;extension=intl
;extension=imap
;extension=interbase
;extension=ldap
extension=mbstring
;extension=exif      ; Must be after mbstring as it depends on it
extension=mysqli
;extension=oci8_12c  ; Use with Oracle Database 12c Instant Client
;extension=odbc
;extension=openssl
;extension=pdo_firebird
extension=pdo_mysql
;extension=pdo_oci
;extension=pdo_odbc
;extension=pdo_pgsql
;extension=pdo_sqlite
;extension=pgsql
;extension=shmop

php.iniの編集が終わったら、php-cgi.exeの再起動をお忘れなく。

phpmyadminへログイン

phpmyadminをインストールした場所、うちの例では http://localhost/phpmyadmin/ をブラウザで開きます。

phpmyadminのログイン画面

するとこんなログイン画面が表示されますので、MariaDBのユーザー名とパスワードを入力してログインできればOKです。

トラブルシューティング

phpmyadminのログイン画面が表示されない

  • nginx.confのindexにindex.phpを追加し忘れている。 http://localhost/phpmyadmin/index.php で開けるか試してみると良いかも。
  • nginx.exeの起動を忘れている。
  • php-cgi.exeの起動を忘れている。

ログイン画面で「mysqli 拡張がありません」

  • php.iniで extension=mysqli の記述を忘れている
  • php.iniは正しくてもphp-cgi.exeの再起動を忘れている

ログイン画面で「MySQL サーバにログインできません」

  • MariaDBのポート番号3306以外に変更している

MySQLと共存するためにMariaDBを別のサービス名、別のポート番号に変更している場合はphpmyadminのconfig.inc.phpの編集が必要です。
(デフォルトのポート番号は3306)

phpmyadminの直下にサンプルとして config.sample.inc.php があるので、これを config.inc.php にリネームして使います。

■変更箇所はconfig.inc.phpのこの部分

$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['port'] = '3306';

たぶん $cfg[‘Servers’][$i][‘port’] の記述はないので自分で追記してください。

ログイン後の赤字メッセージが気になる場合

赤字のメッセージが mbstring に関するものだった場合は php.ini で extension=mbstring の記述を忘れているだけかも知れません。再度確認してみてください。

そうではなく、「設定ファイルに、暗号化 (blowfish_secret) 用の非公開パスフレーズの設定を必要とするようになりました」の場合、phpmyadminのconfig.inc.phpの編集が必要です。

/* vim: set expandtab sw=4 ts=4 sts=4: */
/**
 * phpMyAdmin sample configuration, you can use it as base for
 * manual configuration. For easier setup you can use setup/
 *
 * All directives are explained in documentation in the doc/ folder
 * or at <https://docs.phpmyadmin.net/>.
 *
 * @package PhpMyAdmin
 */

/**
 * This is needed for cookie based authentication to encrypt password in
 * cookie. Needs to be 32 chars long.
 */
$cfg['blowfish_secret'] = 'hogehogehogehogehogehogehogehoge'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

config.inc.phpの $cfg[‘blowfish_secret’] に適当な文字列(32文字以上)を設定すればOKです。

これはphpmyadminの内部で使われるパスフレーズで、具体的にはCookieによる自動認証時などに使われます。外部で使用する場合はもちろんのこと、内部で使用する場合であっても、なるべく複雑な推測しづらいランダムな32文字以上を割り当てると良いでしょう。別にこの長い文字列を覚える必要はありませんので。

ログイン後のワーニングが気になる場合

黄色い三角マークと共に、

「phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。」

という表示がされていると思います。これは要するに phpmyadmin の環境設定を保存するデータベースがないよ、ということです。

phpmyadminを開いて[設定]メニューをクリックすればわかるのですが、phpmyadminの表示方法やインポート/エクスポート時のデフォルトオプション等、いわゆる環境設定的なものを保存する場所がほしいわけですね。なくても別に動くんですけど、次にphpmyadminを開いたときに環境設定を忘れている、と。

このphpmyadmin用の環境保管領域を作るためには c:\nginx\html\phpmyadmin\sql\ の下にある create_tables.sql を実行すればOKです。

phpmyadminのインポート画面

phpmyadminのメニューから[インポート]をクリックし、[ファイル選択]で create_tables.sql を選択し、[実行]をクリック。

これで phpmyadmin という名前のデータベースと必要なテーブルが作られたはずです。

ここまですれば、赤いエラーメッセージも黄色い警告メッセージもなくなったはず。

あ、もひとつあります?

もしそれが「You are using an incomplete translation, please help to make it better by contributing.」(翻訳が不完全だから良ければ協力してね♪)であればそのままの意味なので気にしなくてもOKです。翻訳の品質が気になる場合はcontributingのページを開いて協力するのも良いでしょう。

レンタルサーバーにphpmyadminを入れる場合

レンタルサーバーの場合、プランによってはデータベースが1つだけで名前も決まっているケースがあります。

1つのMySQLを共有するため、勝手にphpmyadminという名前のデータベースを作ることはできません。

その場合はcreate_tables.sqlの下記部分を消し、

CREATE DATABASE IF NOT EXISTS phpmyadmin DEFAULT CHARACTER SET utf8 COLLATE utf8_bin; USE phpmyadmin;

それ以降のCREATE TABLE文だけを実行すれば必要なテーブル群(名前の先頭にpma__と付いています)が作成されます。

そして、/phpmyadmin/config.inc.php の下記部分にレンタルサーバーで使えるデータベース名を指定してあげればOKです。

$cfg['Servers'][$i]['pmadb'] = 'データベース名';

まとめ

phpmyadminのインストールについて簡単にまとめると、
  1. 公式サイトからZIPファイルをダウンロード
  2. ドキュメントルート以下の任意のディレクトリへ解凍
  3. php.iniのmbstringとmysqliを有効化
  4. config.sample.inc.phpをconfig.inc.phpにリネーム
  5. config.inc.php内のblowfish_secretに適当な文字列を設定して保存
  6. phpmyadminへログインし、インポート画面で create_tables.sql を実行

と、こんな感じでした。

まぁ、No.4以降はやらなくても一応動いちゃうんですけどね。警告メッセージが出たままというのも気持ちが悪いですし、できれば実行しておきましょ。