PhpMyAdmin

Материал из ALT Linux Wiki

Установка и настройка phpMyAdmin из исходного кода

Примечание: Обратите внимание, что это не официальная документация, а попытка начинающего админа объяснить материал начинающим админам.


phpMyAdmin - это бесплатный инструмент администрирования с открытым исходным кодом для MySQL и MariaDB. Как портативное веб-приложение, написанное преимущественно на PHP, оно стало одним из самых популярных инструментов администрирования MySQL, особенно для служб веб-хостинга

Функции, предоставляемые программой, включают в себя:

  • Веб-интерфейс
  • Управление базами данных MySQL и MariaDB
  • Импортируйте данные из CSV, JSON и SQL
  • Экспортируйте данные в различные форматы: CSV, SQL, XML, JSON, PDF (через библиотеку TCPDF), ISO / IEC 26300 - OpenDocument Text and Spreadsheet, Word, Excel, LaTeX, SQL и другие
  • Администрирование нескольких серверов
  • Создание PDF-графики макета базы данных
  • Создание сложных запросов с использованием метода query-by-example (QBE)
  • Поиск по всему миру в базе данных или ее подмножестве
  • Преобразование сохраненных данных в любой формат с использованием набора предопределенных функций, таких как отображение BLOB-данных в виде изображения или ссылки для скачивания
  • Графики в реальном времени для мониторинга активности сервера MySQL, такой как соединения, процессы, использование процессора / памяти и т.д.
  • Сетевой трафик к серверу SQL
  • Работает с различными операционными системами, такими как Windows*, Linux , OS/2, свободная BSD * Unix (например, Sun * Solaris*, AIX) и другими.
  • Упростите выполнение сложных SQL-запросов.

При использовании программ вроде phpMyAdmin всегда следует учитывать, что она:

  • Взаимодействует с MariaDB/MySQL напрямую;
  • Выполняет аутентификацию при помощи учётных данных MariaDB/MySQL;
  • Обрабатывает и возвращает результаты для произвольных запросов SQL.

Установка базы данных MariaDB:

MariaDB — ответвление от системы управления базами данных MySQL, разрабатываемое сообществом под лицензией GNU GPL. Разработку и поддержку MariaDB осуществляет компания MariaDB Corporation Ab и фонд MariaDB Foundation.

Интерфейс phpMyAdmin разработан специально для управления базами MySQL и во многих диалоговых окнах ссылается именно на MySQL. Однако MariaDB тоже будет работать с phpMyAdmin.

  • Обновить список пакетов и установить MariaDB:
apt-get update -y && apt-get install -y mariadb-server

По умолчанию конфигурационный файл /etc/my.cnf.d/server.cnf - настроен таким образом, что к MariaDB разрешены подключения только с локальной машины, а параметр skip-networking - не разрешает подключение по протоколу TCP/IP

Если необходимо обеспечить удалённый доступ к MariaDB необходимо выполнить следующие действия:

  • Никак не влияет на работу phpMyAdmin
  • Для того, чтобы разрешить удалённый доступ к MariaDB - необходимо отредактировать конфигурационный файл /etc/my.cnf.d/server.cnf:
    • раскомментировать параметр - bind-address и указать подсеть или конкретный IP-адрес, которым разрешён удалённый доступ
      • также можно использовать в качестве параметра - 0.0.0.0/0, что будет означать - разрешено подключаться всем и отовсюду
    • закомментировать параметр - skip-networking
vim /etc/my.cnf.d/server.cnf
Skip-networking.png
Bind-address.png
  • после необходимо включить и добавить в автозагрузку mariadb:
systemctl enable --now mariadb
  • Необходимо проверить наличие открытого порта для удалённого подключения:
ss -tlpn | grep mysqld
Mariadb-port.png
  • также можно поправить привилегии пользователя root, чтобы можно было выполнять удалённое подключение, а также задать пароль (опционально, если это необходимо):
mariadb
> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION;
> EXIT;

где:

  • GRANT ALL PRIVILEGES предоставляет полные права, включая SELECT, INSERT, UPDATE, DELETE, CREATE, DROP и другие права на все базы данных и таблицы.
  • *.* указывает, что эти привилегии применяются ко всем базам данных и таблицам.
  • 'root'@'%' определяет имя пользователя (root) и хост, с которого пользователь может подключаться (в данном случае, со всех хостов, так как '%' означает "с любого хоста").
  • IDENTIFIED BY 'P@ssw0rd' устанавливает пароль "P@ssw0rd" для пользователя "root".

Проверка удалённого доступа с клиента:

  • на клиенте установлен пакет "mariadb-client"
mariadb -h <IP_ADDRESS_SERVERA> -u <USER_NAME> -p
Cli-mariadb.png

Прежде чем устанавливать phpMyAdmin, официальная документация рекомендует установить несколько вспомогательных PHP-расширений, которые позволяют активировать дополнительные функции и улучшить производительность.

apt-get install -y php8.2 php8.2-{fpm-fcgi,mbstring,zip,gd,libs,mysqlnd,mysqlnd-mysqli,bz2,curl,mcrypt,opcache,openssl} libmcrypt wget

Перейдите на страницу загрузки. Найдите ссылку на последний стабильный релиз phpMyAdmin, скопируйте и загрузите ссылку. Эта ссылка ведет к архиву, после распаковки которого в системе создается ряд файлов.

1024X703px
  • выполняем скачивание архива на сервер:
wget https://files.phpmyadmin.net/phpMyAdmin/5.2.1/phpMyAdmin-5.2.1-all-languages.zip
  • распаковываем:
unzip phpMyAdmin-5.2.1-all-languages.zip
  • перемещаем весь проект в директорию /usr/share/phpmyadmin
mv phpMyAdmin-5.2.1-all-languages /usr/share/phpmyadmin

Ручная настройка phpMyAdmin

Для начала необходимо создать новый каталог, в котором phpMyAdmin будет хранить свои временные файлы:

mkdir -p /var/lib/phpmyadmin/tmp

Также как и на весь проект phpMyAdmin, так и на директорию созданную под временные файлы необходимо назначить владельца - пользователя, который используется веб-сервером Apache

  • таким образом, необходимо установить данный веб-сервер, чтобы в системе появился необходимый пользователь apache2, также сразу установим все необходимые дополнительные пакеты для работы Apache2 с php:
apt-get install -y httpd2 apache2-{httpd-prefork,mod_php8.2}
  • назначаем владельцем файлов phpMyAdmin пользователя - apache2
chown -R apache2:apache2 /usr/share/phpmyadmin
chown -R apache2:apache2 /var/lib/phpmyadmin

Извлеченные ранее файлы включают образец конфигурации, который можно использовать в качестве основы.

  • Скопируем этот файл в тот же каталог /usr/share/phpmyadmin и переименуем в config.inc.php:
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

По умолчанию phpMyAdmin использует метод аутентификации cookie, что позволяет вам входить в phpMyAdmin как любой валидный пользователь MariaDB с помощью куки. По этому методу пароль пользователя MariaDB хранится и шифруется по алгоритму Advanced Encryption Standard (AES) во временных куки.

Традиционно phpMyAdmin использовал вместо этого алгоритма шифр Blowfish, и это по-прежнему отражено в конфигурации.

  • таким образом, в строке которая начинается с $cfg[‘blowfish_secret’]: в единичных кавычках необходимо ввести строку из 32 случайных символов. Это не пароль, ее не нужно запоминать, эта строка будет использоваться алгоритмом AES только внутренне.
    • Примечание: Если эта строка окажется короче 32 символов, ваши зашифрованные куки будут менее надежны. Если же строка будет длиннее, ничего не изменится.
vim /usr/share/phpmyadmin/config.inc.php
Config-inc-php-blowfish.png

Далее в этом же файле необходимо найти комментарий */* User used to manipulate with storage */*.

В этом разделе содержатся некоторые директивы, которые определяют пользователя базы данных MariaDB по имени pma, который выполняет определенные административные задачи в phpMyAdmin. Согласно официальной документации, эта специальная учетная запись не нужна в тех случаях, когда доступ к phpMyAdmin имеет только один пользователь, но ее рекомендуется настроить в многопользовательских сценариях.

  • раскомментируем директивы controluser и controlpass, удалив косую черту в начале строки. Затем обновим директиву controlpass, указав в ней надежный пароль
Config-inc-php-db.png

Ещё один раздел, с комментарием /* Storage database and tables */. Этот раздел содержит ряд директив, определяющих хранилище конфигурации phpMyAdmin, базу данных и несколько таблиц, используемых pma.

  • раскомментируем каждую строку в этом разделе, удалив косую черту в начале, чтобы раздел выглядел следующим образом:
Config-inc-php-db1.png
  • также необходимо настроить phpMyAdmin на использование каталога /var/lib/phpmyadmin/tmp, который был создан ранее, в качестве своего временного каталога.
Config-inc-php-db2.png

Затем вам нужно создать базу данных и таблицы конфигурации phpMyAdmin:

  • используем файл create_tables.sql - который входит в состав архива, ранее скаченный с официального сайта phpMyAdmin
    • Этот файл SQL содержит все команды, необходимые для создания базы данных хранилища конфигурации и таблиц, которые нужны phpMyAdmin для того чтобы правильно функционировать
mariadb < /usr/share/phpmyadmin/sql/create_tables.sql
  • также создадим пользователя pma:
mariadb
> GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'P@ssw0rd';
> EXIT;

Настройка веб-сервера Apache для обслуживания phpMyAdmin

Как сам веб-сервер Apache так и все вспомогательные пакеты были установлены ранее.

  • включаем и добавляем в автозагрузку веб-сервер:
systemctl enable --now httpd2
  • создадим конфигурационный файл phpmyadmin.conf:
vim /etc/httpd2/conf/sites-available/phpmyadmin.conf
Phpmyadmin-conf-httpd2.png
  • затем необходимо включить данный конфигурационный файл
a2ensite phpmyadmin
  • также существует утилита для проверки синтаксиса конфигурационного файла:
apachectl configtest
Apachectl.png
  • после перезапускаем сервис httpd2, чтобы изменения вступили в силу:
systemctl reload httpd2

После этого можно получить доступ к странице входа в phpMyAdmin, для этого откройте следующий URL-адрес в веб-браузере:

Phpmyadmin-web1.png
  • также если необходимо добавить возможность явно указывать IP-адрес или имя сервера БД к которому необходимо подключаться - необходимо добавить параметр "$cfg['AllowArbitraryServer'] = true;" в конфигурационный файл "config.inc.php"

Можем выполнить вход из под пользователя root, которому выдали максимальные привелегии ранее:

Phpmyadmin-web2.png
  • в случае неудачного входа и следующей ошибки, необходимо добавить следующий параметр skip-grant-tables - в конфигурационный файл MariaDB /etc/my.cnf.d/server.cnf:
vim /etc/my.cnf.d/server.cnf
...
skip-grant-tables
...

также необходимо перезагрузить mariadb:

systemctl restart maiadb

После чего можно успешно аутентифицироваться в phpMyAdmin из под пользователя root для дальнейшего администрирования и создания других пользователей и баз данных с необходимыми привилегиями:

Phpmyadmin-web3.png