phpMyAdmin
phpMyAdmin は Apache/PHP フロントエンドを使って MySQL データベースの管理を助けるウェブベースのツールです。LAMP セットアップが必要になります。
インストール
phpmyadmin パッケージをインストールしてください。
設定
PHP
PHP の mysqli
拡張を有効にする必要があります。/etc/php/php.ini
を編集して以下の行をアンコメントしてください:
extension=mysqli.so
任意で bz2.so
と zip.so
を有効にすることで圧縮を有効にできます。
PHP が /etc/webapps
にアクセスできることを確認してください。必要ならば以下を /etc/php/php.ini
の open_basedir
に追加します:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/
Apache
LAMP の記事で書かれているように PHP を使えるように Apache を設定します。
Apache の設定ファイルを作成:
/etc/httpd/conf/extra/phpmyadmin.conf
Alias /phpmyadmin "/usr/share/webapps/phpMyAdmin" <Directory "/usr/share/webapps/phpMyAdmin"> DirectoryIndex index.php AllowOverride All Options FollowSymlinks Require all granted </Directory>
/etc/httpd/conf/httpd.conf
に以下を記述:
# phpMyAdmin configuration Include conf/extra/phpmyadmin.conf
デフォルトでは、誰でも phpMyAdmin ページを表示できるようになっています。これを変更するには /etc/httpd/conf/extra/phpmyadmin.conf
を自由に編集してください。例えば、同一マシンからしかアクセスできないようにしたい場合、Require all granted
を Require local
に置き換えてください。
Lighttpd
Lighttpd の設定は Apache とほぼ同じです。Lighttpd が PHP ファイルを使えるように設定してください (Lighttpd を参照)。
Lighttpd の設定に phpmyadmin のエイリアスを作成します:
alias.url = ( "/phpmyadmin" => "/usr/share/webapps/phpMyAdmin/")
そして設定で mod_alias, mod_fastcgi, mod_cgi を有効化してください (server.modules セクション)。
Lighttpd を再起動して [1] を開きます。
Nginx
方法 1: サブドメイン
この方法を使う場合、PhpMyAdmin に phpmyadmin.<domain>
でアクセスします。
Nginx の設定は Apache と (したがって Lighttpd とも) ほぼ同じです,PHP ファイルを使えるように Nginx を設定してください (Nginx を参照)。
以下のように server ブロックを使うことでサブドメイン (またはドメイン) をセットアップできます (php-fpm を使う場合):
server { server_name phpmyadmin.<domain.tld>; root /usr/share/webapps/phpMyAdmin; index index.php; location ~ \.php$ { try_files $uri =404; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } }
ローカルホスト上の url にアクセスするには、/etc/hosts
にエントリを追加します:
127.0.0.1 phpmyadmin.<domain.tld>
PHP の open_basedir オプションを修正して適切なディレクトリを追加する必要があります。/etc/php/php.ini
を編集:
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/
または phpmyadmin を別のエントリで php-fpm を実行する場合、プールの定義で値を上書きできます (/etc/php/fpm.d/<pool file>
):
php_admin_value[open_basedir] = /tmp/:/usr/share/webapps/:/etc/webapps/
上記の設定で修正されない場合、Nginx の設定に以下の fastcgi_param を追加してみてください:
fastcgi_param PHP_ADMIN_VALUE open_basedir="/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/";
blowfish パスワードには何でも入力できますが、(セキュリティ上の理由で) ランダムに生成された文字列を使いたいと思うかもしれません。その場合はウェブに便利なツールがあります [2]。
SSL を使用する場合、phpMyAdmin によって生成されたページのリンクが "https" ではなく "http" になってしまってエラーが発生することがあります。これを修正するには、以下の fcgi_param を SSL を使用する server のセクションに (通常の fastcgi パラメータに加えて) 追加します:
fastcgi_param HTTPS on;
方法 2: サブディレクトリ
この方法を使う場合、Apache と同じように PhpMyAdmin は localhost/phpmyadmin
でアクセスします。
nginx で PhpMyAdmin を使うには、まず使用したいサーバーのルートパスをメモして下さい。そしてシンボリックリンクを作成 (/srv/http
を適当なルートに置き換えてください):
# ln -s /usr/share/webapps/phpMyAdmin/ /srv/http/phpmyadmin
phpMyAdmin の設定
phpMyAdmin の設定ファイルは /etc/webapps/phpmyadmin/config.inc.php
です。MySQL サーバーがローカルにある場合、何も設定しなくても使うことができます。
MySQL サーバーが localhost にはない場合、以下の行をアンコメント・編集してください:
$cfg['Servers'][$i]['host'] = 'localhost';
http://localhost/phpmyadmin/setup から phpMyAdmin のセットアップスクリプトを使いたい場合は、以下のようにして /usr/share/webapps/phpMyAdmin
に httpd ユーザーから書き込みできる設定ディレクトリを作成する必要があります:
# cd /usr/share/webapps/phpMyAdmin # mkdir config # chgrp http config # chmod g+w config
blowfish_secret パスフレーズの追加
/phpmyadmin にログインしたときページの下部に以下のエラーメッセージが表示される場合 (上記の MySQL ユーザー名とパスワードを使用):
ERROR: The configuration file now needs a secret passphrase (blowfish_secret)
phpMyAdmin の設定ファイルに blowfish パスワードを追加する必要があります。/etc/webapps/phpmyadmin/config.inc.php
を編集して以下の行にランダムな blowfish "password" を記述してください:
$cfg['blowfish_secret'] = ; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
こちら から適当に生成された blowfish_secret が取得できるので の間に貼り付けて下さい。以下のようになります:
$cfg['blowfish_secret'] = 'qtdRoGmbc9{8IZr323xYcSN]0s)r$9b_JUnb{~Xz'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
phpmyadmin のページを更新したらエラーは消えているはずです。
設定ストレージの有効化 (任意)
基本的なデータベースサーバーを設定しただけでも使えますが、デフォルトでは、テーブルリンクやトラッキングの変更、PDF の作成やクエリのブックマークなどのオプションが無効になっています。phpMyAdmin のメインページの下部に "The phpMyAdmin configuration storage is not completely configured, some extended features have been deactivated. To find out why..." とメッセージが表示されます。このセクションではこれらの機能を有効化する方法を説明します。
/etc/webapps/phpmyadmin/config.inc.php
を開いて、以下の2行をアンコメント ("//" を削除) して、適当な値に変更してください:
// $cfg['Servers'][$i]['controluser'] = 'pma'; // $cfg['Servers'][$i]['controlpass'] = 'pmapass';
あとで設定した値を使うので、覚えておいて下さい。
controluser 設定セクションの下の、以下の行をアンコメントします:
/* Storage database and tables */ // $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';
次に、上記で設定したユーザーを作成します。まだパーミッションは設定しないでください。
phpMyAdmin データベースの作成
phpMyAdmin ウェブインターフェイスを使います: phpMyAdmin -> Import から /usr/share/webapps/phpMyAdmin/sql/create_tables.sql
をインポート。または、コマンドラインを使用: mysql -u root -p < /usr/share/webapps/phpMyAdmin/sql/create_tables.sql
。
phpMyAdmin データベースユーザーの作成
SQL タブで controluser にパーミッションを適用します。'pma' と 'pmapass' は全て config.inc.php
で設定した値に置き換えてください。リモートのデータベースを設定する場合、'localhost' も適当なホストに変更します:
GRANT USAGE ON mysql.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass'; GRANT SELECT ( Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv ) ON mysql.user TO 'pma'@'localhost'; GRANT SELECT ON mysql.db TO 'pma'@'localhost'; GRANT SELECT ON mysql.host TO 'pma'@'localhost'; GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) ON mysql.tables_priv TO 'pma'@'localhost';
ブックマークやリレーション機能を使うには、pma に他にもパーミッションを与える必要があります:
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
一度ログアウトしてから、ログインしなおして新しい機能が有効になっていることを確認します。メイン画面の下に表示されていたメッセージは消えているはずです。
phpMyAdmin にアクセス
phpMyAdmin のインストールはこれで完了です。使用する前に Apache を再起動してください。
phpMyAdmin には http://localhost/phpmyadmin/ を開くことでアクセスできます。
トラブルシューティング
open_basedir の警告の修正
PhpMyAdmin のホームページを開いたときに以下の警告が表示される場合:
Warning in ./libraries/Config.class.php#1147 file_exists(): open_basedir restriction in effect. File(./config.inc.php) is not within the allowed path(s): (/srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/)
phpmyadmin が config.inc.php
ファイルのある場所を見つけられないでいます。
この警告を修正するには、/etc/php/php.ini
に、ファイルを含んでいる phpmyadmin
ディレクトリのパスを指定する必要があります。通常は /etc/webapps
です。open_basedir
変数の最後に :
を付けてパスを追記してください:
/etc/php/php.ini
open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/
追記したら、httpd.service
を再起動してください。
ページを更新したら、警告が表示されなくなっているはずです。
#2006 - MySQL server has gone away
PhpMyAdmin にログインしようとすると以下のように表示される場合:
#2006 - MySQL server has gone away Connection for controluser as defined in your configuration failed.
PhpMyAdmin と MariaDB 間で SSL 接続が有効になっていないことを確認してください。以下の行をコメントアウトするか false
に設定してください:
/etc/webapps/phpmyadmin/config.inc.php
$cfg['Servers'][$i]['ssl'] = true;