HomebrewでphpMyAdminをインストールする。

現在PHPを学んでいるのだが、私が利用している本ではデータベースの作成にphpMyAdminがよく利用されている。

phpMyAdminとはデータベース作成のためのインターフェース。直感的にデータベースの作成ができる。今まではSQL文でデータベースを作成してきたのだが、少し使って見たくなった。（単に楽をしたい。）

MAMPやXAMPPならデフォルトで使えるんだけどな。今回はHomebrewでインストールすることにした。

# インストール

Homebrewを使うのは久しぶりだったので、まずupdateから始まった。``brew update``でも当然updateが行われるのだが、パッケージををインストールするときにも毎回実行されるらしい。

```
$ brew install phpmyadmin
Updating Homebrew...
==> Auto-updated Homebrew!
Updated 4 taps (homebrew/core, homebrew/php, homebrew/services, caskroom/cask).
==> New Formulae

#以下略
```

そしたら途中でこんな一文が。

```
Warning: php@7.1 is outdated!
To avoid broken installations, as soon as possible please run:
  brew upgrade
Or, if you're OK with a less reliable fix:
  brew upgrade php@7.1
```

``php@7.1``が古いのでupgradeしろよ！とのこと。update作業で対応してくれてもいいじゃん！とも思ったが、updateとupgradeは違うのだ。

参考記事：
http://mzgkworks.hateblo.jp/entry/homebrew-update-flow

そしてupgrade作業を行う。

```
$ brew upgrade
==> Upgrading 17 outdated packages, with result:
libtiff 4.0.9_1 -> 4.0.9_2, php@7.1 7.1.13_24 -> 7.1.16, postgresql 10.1 -> 10.3, imagemagick@6 6.9.9-31 -> 6.9.9-40, nghttp2 1.29.0 -> 1.31.0, heroku 6.15.17 -> 6.16.8, icu4c 60.2 -> 61.1, ruby-build 20171226 -> 20180329, c-ares 1.13.0 -> 1.14.0, unixodbc 2.3.5_1 -> 2.3.6, httpd 2.4.29_1 -> 2.4.33, pcre 8.41 -> 8.42, node 9.4.0 -> 9.11.1, jpeg 9b -> 9c, openssl 1.0.2n -> 1.0.2o_1, imagemagick 7.0.7-21 -> 7.0.7-28, git 2.16.1 -> 2.17.0

#以下略
```

# Apacheの設定

先ほど``brew install phpmyadmin``を行ったときにこんなメッセージが出ていた。

```
Webserver configuration example (add this at the end of
your /etc/apache2/httpd.conf for instance) :
  Alias /phpmyadmin /usr/local/share/phpmyadmin
  <Directory /usr/local/share/phpmyadmin/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride All
    <IfModule mod_authz_core.c>
      Require all granted
    </IfModule>
    <IfModule !mod_authz_core.c>
      Order allow,deny
      Allow from all
    </IfModule>
  </Directory>
Then, open http://localhost/phpmyadmin
```

この内容を``httpd.conf``に追記してから``http://localhost/phpmyadmin``でphpMyAdminを起動してくださいね、とのこと。指示通り、上記の``Alias〜</Directory>部分``を``httpd.conf``にコピペする。

phpMyAdminの場所である``/usr/local/share/phpmyadmin``も覚えておこう。

# phpMyAdminの設定

最後に``phpmyadmin.config.inc.php``を編集する。書き替え部分は以下の箇所だ。

後に、この作業は本来``config.inc.php``で行うと気が付く・・・

```
$cfg['blowfish_secret'] = '適当な文字列';

#以下略

/* Server parameters */
$cfg['Servers'][$i]['host'] = '127.0.0.1';

#以下略

#以下は全てコメントアウトを外すだけ

$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches';
$cfg['Servers'][$i]['central_columns'] = 'pma__central_columns';
$cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings';
$cfg['Servers'][$i]['export_templates'] = 'pma__export_templates';

#以下略
```

参考記事：
https://soarcode.jp/posts/55

# 起動する
まずはApacheとMySQLを起動する。

```
$ sudo apachectl start
Password:
$ mysql.server start
Starting MySQL
 SUCCESS! 
```

そしたらブラウザを立ち上げ``http://localhost/phpmyadmin``へアクセスする。これで起動するはず・・・！

ログインについては、以前SQL文で設定したユーザーとパスワードがあったので、それを利用した。

ログインすると、今まで作成したデータベースが左側に表示されている。これからはphpMyAdminから操作が可能だ！

# そう思ってたら・・・エラー発生

ログイン後、２つのエラーメッセージが出てしまう・・・

## その１

```
phpMyAdmin 環境保管領域が完全に設定されていないため、いくつかの拡張機能が無効になっています。理由についてはこちらをご覧ください。 
代わりにデータベースの操作タブを使って設定することもできます。
```

これは以下のコマンドを実行し、phpMyAdminの設定の保存場所を指定する必要がある。もちろんphpMyAdminから操作を行うことも可能だ。

```
$ mysql -u ユーザー名 -p < /usr/local/share/phpmyadmin/sql/create_tables.sql
```

参考記事：
https://soarcode.jp/posts/55
https://www.dbonline.jp/phpmyadmin/install/index3.html

## その２

```
設定ファイルの中に記述されているパスフレーズ（blowfish_secret）が短すぎます。
```

これは、先ほど設定を変えた``phpmyadmin.config.inc.php``の``$cfg['blowfish_secret'] = '適当な文字列';``の文字列を32文字以上に設定すると解決する。

参考記事：
https://www.dbonline.jp/phpmyadmin/install/index4.html


# phpmyadmin.config.inc.phpとconfig.inc.php

``phpmyadmin.config.inc.php``で行った作業は、本来は``config.inc.php``で行うものらしい・・・しかし、``phpmyadmin.config.inc.php``の内容が``config.inc.php``へ反映されていた。

２画面で確認したのだが、どうやら``/usr/local/share/phpmyadmin.config.inc.php``と``/usr/local/share/phpmyadmin/config.inc.php``は片方を変更すると、即座にもう一方へ内容が反映されるらしい。

理由は正直よくわからない・・・

# おまけ
phpMyAdminとSQL文の比較についてもいずれ書いてみる。