PhpMyAdmin инструмент для управления базой данных MySQL или MariaDB. Для работы системы управления контентом Drupal 9/10 рекомендуется использовать пакет языка PHP версии 8 или выше. В официальном репозитории Debian 11 на данный момент версия пакета PHP 7.4. Но это не проблема, подключается внешний репозиторий разработчика и ставим последний пакет 8.1. PHP 8.0 содержит большое обновлений для языка PHP и множество новых возможностей. В связи с чем после установки из официального репозитория Debian 11 утилиты phpMyAdmin возникают проблемы и сыпятся ошибки. Так как в случае с языком PHP версия phpMyAdmin тоже старая.
Как видно версия 5.0.4.
Идём на официальный сайт разработчика и там у нас актуальная последняя версия 5.2.0.
Вся прелесть инструмента phpmyadmin состоит в том, что его нет необходимости собирать их исходников и устанавливать в систему, как это делается с разными программами версий которых нет в официальных репозиториях. PhpMyAdmin работает на базе установленного в системе Веб-сервера. Всё что необходимо сделать это скачать архив с сайта разработчика, распаковать его и сделать несколько не сложных настроек.
1. Переходим на страницу загрузки >> Download.
2. Правой кнопки мыши копируем адрес ссылки для нужного нам пакета.
В моём случае это для phpMyAdmin-5.2.0-all-languages.tar.gz
3. По умолчанию рабочий каталог phpmyadmin на нашем сервере располагается в /usr/share/
Перехожу в этот каталог cd /usr/share/
4. Скачиваю архив:
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.0/phpMyAdmin-5.2.0-all-languages.tar.gz
5. Разархивирую только что скачанный архив:
tar -xvf phpMyAdmin-5.2.0-all-languages.tar.gz
6. Далее мне удобнее работать через утилиту Midnight commander. Для запуска в терминале наберите команду:
mc
7. Создаю каталог phpmyadmin, то есть рабочий каталог будет иметь путь /usr/share/phpmyadmin
8. И копирую все файлы из распакованного архива в эту папку.
Дальше в /var/lib/ создаю новый каталог, в котором phpMyAdmin будет хранить свои временные файлы.
Сначала сам каталог /phpmyadmin, затем /tmp
Всё это делаю через тот же midnight commander
То есть в результате путь будет иметь вот такой вид:
/var/lib/phpmyadmin/tmp
Задаю права на каталог:
chown -R www-data:www-data /var/lib/phpmyadmin
Теперь в рабочем каталоге /usr/share/phpmyadmin копирую файл конфигурации с переименованием:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
Дальше его необходимо поправить:
nano /usr/share/phpmyadmin/config.inc.php
По умолчанию phpMyAdmin использует метод аутентификации cookie, что позволяет вам входить в phpMyAdmin как любой валидный пользователь MariaDB с помощью куки. По этому методу пароль пользователя MariaDB хранится и шифруется по алгоритму Advanced Encryption Standard (AES) во временных куки.
Традиционно phpMyAdmin использовал вместо этого алгоритма шифр Blowfish, и это по-прежнему отражено в конфигурации. Прокрутите файл до строки , которая начинается с $cfg[‘blowfish_secret’]:
. . .
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
. . .
В единичных кавычках введите строку из 32 случайных символов. Это не пароль, ее не нужно запоминать, эта строка будет использоваться алгоритмом AES только внутренне.
Перейдите в конец файла и добавьте следующую строку. Это настроит phpMyAdmin на использование каталога /var/lib/phpmyadmin/tmp, который вы создали ранее, в качестве своего временного каталога. phpMyAdmin будет использовать этот временный каталог для кэша шаблонов, который позволяет быстрее загружать страницы:
. . .
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
Сохраните и закройте файл.
Теперь необходимо создать и настроить файл конфигурации для Apache.
Создайте файл phpmyadmin.conf в каталоге /etc/apache2/conf-available/
nano /etc/apache2/conf-available/phpmyadmin.conf
Добавьте в него такое содержимое:
# phpMyAdmin default Apache configuration
Alias /phpmyadmin /usr/share/phpmyadmin
<Directory /usr/share/phpmyadmin>
Options SymLinksIfOwnerMatch
DirectoryIndex index.php
<IfModule mod_php8.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/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
<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/:/etc/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/php-php-gettext/:/usr/share/javascript/:/usr/share/php/tcpdf/:/usr/share/doc/phpmyadmin/:/usr/share/php/phpseclib/
php_admin_value mbstring.func_overload 0
</IfModule>
</Directory>
# Authorize for setup
<Directory /usr/share/phpmyadmin/setup>
<IfModule mod_authz_core.c>
<IfModule mod_authn_file.c>
AuthType Basic
AuthName "phpMyAdmin Setup"
AuthUserFile /etc/phpmyadmin/htpasswd.setup
</IfModule>
Require valid-user
</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>
<Directory /usr/share/phpmyadmin/setup/lib>
Require all denied
</Directory>
Сохраните и закройте файл.
Далее включите его как обычно включаете конфиг для сайта:
a2enconf phpmyadmin.conf
И перезапустить Apache:
systemctl reload apache2
После этого можно получить доступ к странице входа в phpMyAdmin:
http://your_ip_adress_server/phpmyadmin
Также следует создать обычного пользователя MariaDB для управления базами данных через phpMyAdmin.
mariadb -u root -p
MariaDB [(none)]> CREATE USER ИМЯ_ПОЛЬЗОВАТЕЛЯ@localhost IDENTIFIED BY 'ПАРОЛЬ';
MariaDB [(none)]> GRANT ALL PRIVILEGES ON *.* TO 'ИМЯ_ПОЛЬЗОВАТЕЛЯ'@'localhost' IDENTIFIED BY 'ПАРОЛЬ' WITH GRANT OPTION;
MariaDB [(none)]> FLUSH PRIVILEGES;
Строка каждой команды при работе в терминальной оболочке MariaDB должна заканчиваться знаком точка с запятой и только после этого нажимается кнопка Enter.
После этого выйдите из оболочки MariaDB: