Установка phpMyAdmin

18-04-2021

(UPD) Статья обновлена.

Очень вольный перевод computingforgeeks.

Начиная с Debian 10 phpMyAdmin не входит в официальный репозиторий.

Загружаем последнюю версию phpMyAdmin с помощью команды wget:

wget https://files.phpmyadmin.net/phpMyAdmin/5.1.3/phpMyAdmin-5.1.3-all-languages.tar.gz

Извлекаем загруженный архив:

tar xvf phpMyAdmin-5.1.3-all-languages.tar.gz

Перемещаем полученную папку:

sudo mv phpMyAdmin-*/ /usr/share/phpmyadmin

Создаём каталог для временных файлов phpMyAdmin:

sudo mkdir -p /var/lib/phpmyadmin/tmp
sudo chown -R www-data:www-data /var/lib/phpmyadmin

Создаём каталог для файлов конфигурации:

sudo mkdir /etc/phpmyadmin/

Создаём файл конфигурации phpMyAdmin:

sudo cp /usr/share/phpmyadmin/config.sample.inc.php  /usr/share/phpmyadmin/config.inc.php

Редактируем файл и устанавливаем секретную фразу-пароль:

sudo nano /usr/share/phpmyadmin/config.inc.php

Онлайн генератор секретных фраз.

$cfg['blowfish_secret'] = 'xWW{N4~$2/(G5b@?-mzghdtSDA9>[qD{';

Раскомментируем блок User used to manipulate with storage и в опции controlpass установим пароль для служебного пользователя pma:

pwgen 16

/* User used to manipulate with storage */
$cfg['Servers'][$i]['controlhost'] = '';
$cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';

Раскомментируем секцию Storage database and tables:

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

Настроим временный каталог:

$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

Раскомментируем опцию, отвечающую за язык по умолчанию:

$cfg['DefaultLang'] = 'ru';

Создадим пользователя СУБД и назначим ему необходимые права:

mysql -u root -p
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'pmapass';

В IDENTIFIED BY мы должны указать тот же пароль, который был задан в controlpass конфигурационного файла.

FLUSH PRIVILEGES;
QUIT

Создадим служебную базу данных и произведем ее начальное заполнение:

mysql -u root -p < /usr/share/phpmyadmin/sql/create_tables.sql

Удалим служебную директорию setup:

rm -rf /usr/share/phpmyadmin/setup

Создадим файл конфигурации Apache:

sudo nano /etc/apache2/conf-available/pma.conf 
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
 <IfModule mod_php.c>
    <IfModule mod_mime.c>
       AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
       SetHandler application/x-httpd-php
    </FilesMatch>
    php_value include_path .
    php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
    php_admin_value open_basedir /usr/share/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/php/phpseclib/
    php_admin_value mbstring.func_overload 0
 </IfModule>
</Directory>

# Disallow web access to directories that don't need it
<Directory /usr/share/phpmyadmin/templates>
   Require all denied
</Directory>
<Directory /usr/share/phpmyadmin/libraries>
   Require all denied
</Directory>

Подключим конфигурацию:

sudo a2enconf pma

Проверим конфигурацию Apache на ошибки:

sudo apachectl -t

И перезапустим веб-сервер:

sudo service apache2 restart

После этого набираем в браузере http://ip-address/phpmyadmin:

phpMyAdmin

Для обновления потребуется просто скачать архив с новой версией и распаковать поверх существующей установки, не забыв удалить директорию setup. Возможно потребуется обновить служебную базу данных, скрипты для этого находятся в директории sql