phpMyAdmin

提供: ArchWiki
ナビゲーションに移動 検索に移動

phpMyAdmin は Apache/PHP フロントエンドを使って MySQL データベースの管理を助けるウェブベースのツールです。LAMP セットアップが必要になります。

インストール

phpmyadmin パッケージをインストールしてください。

設定

PHP

PHP の mysqli 拡張を有効にする必要があります。/etc/php/php.ini を編集して以下の行をアンコメントしてください:

extension=mysqli.so

任意で bz2.sozip.so を有効にすることで圧縮を有効にできます。

PHP が /etc/webapps にアクセスできることを確認してください。必要ならば以下を /etc/php/php.iniopen_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 grantedRequire 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/phpMyAdminhttpd ユーザーから書き込みできる設定ディレクトリを作成する必要があります:

# 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..." とメッセージが表示されます。このセクションではこれらの機能を有効化する方法を説明します。

ノート: This example assumes you want to use the username pma as the controluser, and pmapass as the controlpass. These should be changed (the very least, you should change the password!) to something more secure.

/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';

次に、上記で設定したユーザーを作成します。まだパーミッションは設定しないでください。

ノート: If you can't login to phpmyadmin, make sure that your mysql server is started.
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 に他にもパーミッションを与える必要があります:

ノート: as long as you did not change the value of $cfg['Servers'][$i]['pmadb'] in /etc/webapps/phpmyadmin/config.inc.php, then <pma_db> should be phpmyadmin
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;
ノート: There surely must be a better fix since 'ssl = true' worked before. Also do not disable SSL if your PhpMyAdmin install is somehow not on the same server as MySQL!