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のサイトを開き、右側にある[Download 4.8.3]をクリックしてZIPをダウンロード。 https://www.phpmyadmin.net/
- ダウンロードした 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/ をブラウザで開きます。
するとこんなログイン画面が表示されますので、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のメニューから[インポート]をクリックし、[ファイル選択]で 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のインストールについて簡単にまとめると、- 公式サイトからZIPファイルをダウンロード
- ドキュメントルート以下の任意のディレクトリへ解凍
- php.iniのmbstringとmysqliを有効化
- config.sample.inc.phpをconfig.inc.phpにリネーム
- config.inc.php内のblowfish_secretに適当な文字列を設定して保存
- phpmyadminへログインし、インポート画面で create_tables.sql を実行
と、こんな感じでした。
まぁ、No.4以降はやらなくても一応動いちゃうんですけどね。警告メッセージが出たままというのも気持ちが悪いですし、できれば実行しておきましょ。