IT系おじさんのチラシの裏
2018年10月~
当サイトの記事にはアフィリエイト広告のリンクが含まれる場合があります

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

関連記事

Windows版PHPでSFTP接続するにはphp_ssh2.dllが必要

Web運営のメンテナンス作業(ローカルへのバックアップ作業とか)を自動化する方法について4回にわけて記事にしてきました。 WSHでブラウザを自動操作する PHPでファイルとDB(Postgre

Windows+nginx+PHPの環境でVirtualHostの設定をする

最近またプログラミング熱が出てきたので、趣味用のWebサーバーを構築しているのですが、どうせ作るなら最近爆発的にシェアを伸ばしているというnginxにしよう、と思いVirtualHostの設定もしたの

コメント

新しいコメントを投稿する

[新規投稿]
 
TOP