Быстрая установка phpMyAdmin

phpMyAdmin - это приложение написанное на PHP и обеспечивающее полноценную, в том числе удаленную, работу с базами данных MySQL через браузер.

В один прекрасный момент мне надоело выписывать руководство по установке phpMyAdmin для каждой операционной системы. Если устанавливать phpMyAdmin из репозиториев, то донастройка до рабочего состояния будет отличаться для Ubuntu или CentOS. Часто даже для версии одного и того дистрибутива настройка phpMyAdmin имеет свои отличия.

Все многочисленные варианты установки от Docker до Composer phpMyAdmin читайте на официальном сайте.

  • Переходим на страницу скачивания https://www.phpmyadmin.net/downloads/, выбираем последнюю на текущий момент и скачиваем ее.
wget -c https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz
  • Распакуйте дистрибутив в корневую директорию вашего веб-сервера (убедитесь, что поддиректории распакованы тоже):
tar -xzvf phpMyAdmin-5.2.0-all-languages.tar.gz
mv phpMyAdmin-5.2.0-all-languages /var/www/ваш_сайт/pma
  • Убедитесь, что все скрипты имеют соответствующего владельца (зачастую это пользователь www-data или nginx)
chown -R www-data:www-data /var/www/ваш_сайт/pma/
  • Теперь Вы должны создать конфигурационный файл (config.inc.php). Создание конфигурационного файла - необходимое условие прежде всего для запуска phpMyAdmin, а также необходимо для задания некоторых возможностей. Эта задача может быть выполнена двумя разными способами. Традиционно, пользователи могут вручную отредактировать копию файла config.inc.php. Для того, чтобы вручную создать конфигурационный файл, достаточно простейшего текстового редактора, с помощью которого нужно создать файл config.inc.php. Для упрощения задачи, Вы можете скопировать файл config.sample.inc.php - образец рабочей конфигурации, содержащей минимальное количество конфигурационных переменных. Созданный файл необходимо поместить в главную директорию phpMyAdmin (ту, которая содержит index.php). phpMyAdmin сперва загружает libraries/config.default.php, а затем подменяет значения прописанных в нем переменных теми, что находит в config.inc.php. Если значение по умолчанию (тех переменных, что определены в libraries/config.default.php) Вас устраивает, тогда нет необходимости включать его в config.inc.php.
cd pma/
cp config.sample.inc.php config.inc.php
  • Для запуска phpMyAdmin вам понадобятся как минимум несколько директив, простейшая конфигурация может выглядеть так:
<?php
// use here a value of your choice at least 32 chars long
$cfg['blowfish_secret'] = '1{dd0`<Q),5XP_:R9UK%%8\"EEcyH#{o';
 
$i=0;
$i++;
/* Authentication type */
// $cfg['Servers'][$i]['auth_type']     = 'cookie';
$cfg['Servers'][$i]['auth_type'] = 'http';
// if you insist on "root" having no password:
// $cfg['Servers'][$i]['AllowNoPassword'] = true;
?>

Всё! phpMyAdmin установлен и готов к работе.

Или, если вы не хотите вводить каждый раз логин/пароль (данная конфигурация не рекомендуется из соображений безопасности), конфигурационный файл может выглядеть так:

<?php
$i=0;
$i++;
$cfg['Servers'][$i]['user']          = 'root';
$cfg['Servers'][$i]['password']      = 'changeme'; // ваш пароль
$cfg['Servers'][$i]['auth_type']     = 'config';
?>

Для создания пользователя со всеми привилегиями нужно последовательно ввести следующие команды в оболочку MySQL:

CREATE USER 'user'@'localhost' IDENTIFIED BY 'mypassword';
GRANT ALL PRIVILEGES ON *.* TO 'user'@'localhost' WITH GRANT OPTION;
  • «user» – логин создаваемой учётной записи.
  • «mypassword» – пароль создаваемой учётной записи.

Теперь можно выполнить вход в PhpMyAdmin от имени созданного пользователя. После входа будет открыто окно с интерфейсом PhpMyAdmin.

Включение дополнительных возможностей phpMyAdmin: Linked-tables infrastructure (Инфраструктура связанных таблиц). Для использования многих опций (закладок, комментариев, SQL-истории, PDF-схем, преобразования содержимого полей, и т.д.) необходимо создать набор специальных таблиц. Эти таблицы могут находиться как в Вашей базе данных, так и в центральной базе при многопользовательской системе (в этом случае данная БД может быть доступна только для пользователя controluser, соответственно, другие пользователи не имеют прав на неё).

В файл config.inc.php нужно добавить и раскомментировать строки (копируем их из файла config.sample.inc.php)

/* 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';
 
/*
 * End of servers configuration
 */
 
/*
 * Directories for saving/loading files from server
 */
$cfg['UploadDir'] = '';
$cfg['SaveDir'] = '';

Создаем таблицы phpMyAdmin, для этого импортируем файл create_tables.sql (находится в подпапке sql)

mysql -uroot -p < sql/create_tables.sql

Создаем пользователя для управления ново созданной базой и прописываем его в настройках

/* User used to manipulate with storage */
// $cfg['Servers'][$i]['controlhost'] = '';
// $cfg['Servers'][$i]['controlport'] = '';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'pmapass';
You will also need to have a controluser ($cfg['Servers'][$i]['controluser'] and $cfg['Servers'][$i]['controlpass'] settings) with the proper rights to those tables. For example you can create it using following statement:

And for any MariaDB version:

CREATE USER 'pma'@'localhost' IDENTIFIED VIA mysql_native_password USING 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON `<pma_db>`.* TO 'pma'@'localhost';
For MySQL 8.0 and newer:

CREATE USER 'pma'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';
For MySQL older than 8.0:

CREATE USER 'pma'@'localhost' IDENTIFIED WITH mysql_native_password AS 'pmapass';
GRANT SELECT, INSERT, UPDATE, DELETE ON <pma_db>.* TO 'pma'@'localhost';

Расширенные настройки phpMyAdmin

PmaAbsoluteUri позволяет в настройках (config.inc.php) phpmyadmin явно указать URL сайта на котором он работает, в противном случае phpmyadmin определяет его автоматически. Эта возможность может понадобиться например если Аpache работает на нестандартном порту (пусть 81 порт), а front-end к нему стоит Nginx.

$cfg['PmaAbsoluteUri'] = 'https://ssl.example.org/pma.example.org/';
PQ VPS сервера в 28+ странах.