PhpMyAdmin
Установка и настройка 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
- раскомментировать параметр - bind-address и указать подсеть или конкретный IP-адрес, которым разрешён удалённый доступ
vim /etc/my.cnf.d/server.cnf
- после необходимо включить и добавить в автозагрузку mariadb:
systemctl enable --now mariadb
- Необходимо проверить наличие открытого порта для удалённого подключения:
ss -tlpn | grep mysqld
- также можно поправить привилегии пользователя 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
Прежде чем устанавливать 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, скопируйте и загрузите ссылку. Эта ссылка ведет к архиву, после распаковки которого в системе создается ряд файлов.
- выполняем скачивание архива на сервер:
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
Далее в этом же файле необходимо найти комментарий */* User used to manipulate with storage */*.
В этом разделе содержатся некоторые директивы, которые определяют пользователя базы данных MariaDB по имени pma, который выполняет определенные административные задачи в phpMyAdmin. Согласно официальной документации, эта специальная учетная запись не нужна в тех случаях, когда доступ к phpMyAdmin имеет только один пользователь, но ее рекомендуется настроить в многопользовательских сценариях.
- раскомментируем директивы controluser и controlpass, удалив косую черту в начале строки. Затем обновим директиву controlpass, указав в ней надежный пароль
Ещё один раздел, с комментарием /* Storage database and tables */. Этот раздел содержит ряд директив, определяющих хранилище конфигурации phpMyAdmin, базу данных и несколько таблиц, используемых pma.
- раскомментируем каждую строку в этом разделе, удалив косую черту в начале, чтобы раздел выглядел следующим образом:
- также необходимо настроить phpMyAdmin на использование каталога /var/lib/phpmyadmin/tmp, который был создан ранее, в качестве своего временного каталога.
Затем вам нужно создать базу данных и таблицы конфигурации 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
- затем необходимо включить данный конфигурационный файл
a2ensite phpmyadmin
- также существует утилита для проверки синтаксиса конфигурационного файла:
apachectl configtest
- после перезапускаем сервис httpd2, чтобы изменения вступили в силу:
systemctl reload httpd2
После этого можно получить доступ к странице входа в phpMyAdmin, для этого откройте следующий URL-адрес в веб-браузере:
- также если необходимо добавить возможность явно указывать IP-адрес или имя сервера БД к которому необходимо подключаться - необходимо добавить параметр "$cfg['AllowArbitraryServer'] = true;" в конфигурационный файл "config.inc.php"
Можем выполнить вход из под пользователя root, которому выдали максимальные привелегии ранее:
- в случае неудачного входа и следующей ошибки, необходимо добавить следующий параметр 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 для дальнейшего администрирования и создания других пользователей и баз данных с необходимыми привилегиями: