phpMyAdmin — это бесплатный программный инструмент, написанный на PHP и предназначенный для администрирования MySQL через веб-браузер.
phpMyAdmin поддерживает широкий спектр операций с MySQL и MariaDB. Часто используемые операции (управление базами данных, таблицами, столбцами, отношениями, индексами, пользователями, разрешениями и т. д.) могут выполняться через пользовательский интерфейс, при этом у вас все еще есть возможность напрямую выполнять любой оператор SQL.
Функции
Интуитивно понятный веб-интерфейс
Поддержка большинства функций MySQL:
просматривать и удалять базы данных, таблицы, представления, поля и индексы
создавать, копировать, удалять, переименовывать и изменять базы данных, таблицы, поля и индексы
сервер обслуживания, базы данных и таблицы, с предложениями по настройке сервера
выполнять, редактировать и добавлять в закладки любые операторы SQL , даже пакетные запросы
управлять учетными записями пользователей и привилегиями MySQL
управлять хранимыми процедурами и триггерами
Импорт данных из CSV и SQL
Экспорт данных в различные форматы: CSV , SQL , XML , PDF , ISO / IEC 26300 — OpenDocument Text and Spreadsheet, Word , L A T E X и другие
Администрирование нескольких серверов
Создание графики макета вашей базы данных в различных форматах
Создание сложных запросов с использованием Query-by-example (QBE)
Глобальный поиск в базе данных или ее подмножестве
Преобразование сохраненных данных в любой формат с помощью набора предопределенных функций, таких как отображение BLOB-данных в виде изображения или ссылки для скачивания.
И многое другое...
Установка phpMyAdmin
Первый шаг — установка модуля расширения php-mbstring. Mbstring предоставляет функции для работы с многобайтными строками, которые облегчают обработку многобайтовых кодировок в php.
Следующим этапом станет инсталляция phpMyAdmin в систему. Выполняется это командой:
sudoaptinstallphpmyadmin-y
Обратить внимание на Validate Password
Во время инсталляции LAMP мог быть активирован плагин Validate Password. Это чревато ошибкой при создании пароля для пользователя phpmyadmin. Для деактивации плагина необходимо выполнить следующие шаги:
Открыть консоль управления MySQL:
sudomysql
Если активна аутентификация по паролю суперпользователя root, команда будет выглядеть так:
Это действие произведет отключение плагина Validate Password.
Покинем консоль MySQL, команда:
exit
Можно продолжить установку phpMyAdmin. Эти действия следует производить только в случае возникновения ошибки, во всех остальных случаях в этом нет необходимости.
Продолжим установку. После отправки команды в терминал появится окно установщика, в котором потребуется ответить на ряд вопросов. Навигация в установщике осуществляется посредством использования клавиш Up down, выбор пунктов кнопка «Пробел», переход ниже — Tab. Ввод выбранного ответа — Enter.
На первый вопрос про используемый web-сервер, необходимо ответить — apache2.
Следующий вопрос про инсталляцию и настройку служебной базы данных для самой программы phpMyAdmin, отвечаем положительно.
Следующим пунктом будет установлен пароль ранее созданной базы данных для пользователя phpmyadmin:
Подтвердим созданный ранее пароль:
Вывод успешной работы программы:
vlan48@apachi:~$ sudo apt -y install phpmyadmin[sudo] password for vlan48:Reading package lists... DoneBuilding dependency treeReading state information... DoneSuggested packages: www-browser php-recode php-gd2 php-pragmarx-google2fa php-bacon-qr-code php-samyoul-u2f-php-serverRecommended packages: php-curl php-gd php-bz2 php-zip php-tcpdfThe following NEWpackages will be installed: phpmyadmin0 upgraded,1 newly installed,0 to remove and28 not upgraded.Need to get 4426 kB of archives.After this operation,27.2 MB of additional disk space will be used.Get:1 http://mirror.selectel.ru/ubuntu focal/universe amd64 phpmyadmin all 4:4.9.5+dfsg1-2 [4426 kB]Fetched 4426 kB in 0s (34.8 MB/s)Preconfiguring packages ...Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.Selecting previously unselected package phpmyadmin.(Reading database ...46341 files and directories currently installed.)Preparing to unpack .../phpmyadmin_4%3a4.9.5+dfsg1-2_all.deb ...Unpacking phpmyadmin (4:4.9.5+dfsg1-2)...Setting up phpmyadmin (4:4.9.5+dfsg1-2)...Determining localhost credentials from /etc/mysql/debian.cnf: succeeded.dbconfig-common: writing config to /etc/dbconfig-common/phpmyadmin.confCreating config file /etc/dbconfig-common/phpmyadmin.conf with newversionCreating config file /etc/phpmyadmin/config-db.php with newversionchecking privileges on database phpmyadmin for phpmyadmin@localhost: user creation needed.granting access to database phpmyadmin for phpmyadmin@localhost: success.verifying access for phpmyadmin@localhost: success.creating database phpmyadmin: success.verifying database phpmyadmin exists: success.populating database via sql... done.dbconfig-common: flushing administrative passwordapache2_invoke: Enable configuration phpmyadmin
Установка завершена. Прежде чем пойти далее, необходимо произвести проверку работоспособности на данном этапе, чтобы в случае возникновения проблем, их можно было решить с наименьшими трудозатратами.
Проверим. В любом браузере открываем phpMyAdmin по IP-адресу сервера:
ip_address/phpmyadmin
Теперь можно войти в систему с использованием учетной записи, созданной во время установки. Проверяем:
Для учетной записи root по умолчанию применяется доступ с использованием плагина auth_socket. Изменим это на аутентификацию с использованием пароля. В данном случае необходимо изменить тип аутентификации на аутентификацию с использованием пароля.
Откроем консоль MySQL:
sudomysql
Произведем проверку таблицы пользователей, чтобы увидеть метод аутентификации для каждого пользователя:
Теперь у пользователя root тип аутентификации — caching_sha2_password.
Работа с пользователями
Основная задача в работе с пользователями phpMyAdmin — создание и настройка прав. В качестве примера создадим пользователя с максимальными привилегиями.
Необходимо вернуться в терминал под пользователем с административными правами и отправить команду:
sudomysql
Так мы запустим работу с базой данных от имени администратора. Потребуется ввод пароля.
Вывод:
WelcometotheMySQLmonitor.Commandsendwith ; or \g.YourMySQLconnectionidis14Serverversion:8.0.27-0ubuntu0.20.04.1 (Ubuntu)Copyright (c) 2000, 2021, Oracle and/or its affiliates.OracleisaregisteredtrademarkofOracleCorporationand/oritsaffiliates.Othernamesmaybetrademarksoftheirrespectiveowners.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.mysql>
Теперь необходимо добавить пользователя, а также его пароль. Выполнить это можно командой:
На этом настройка пользователей завершена. Для выхода из mysql необходимо отправить команду exit.
Обеспечение безопасности phpMyAdmin
Если к серверу есть хоть какой-то доступ из интернета или ненадежной сети, необходимо обеспечить безопасность, добавив авторизацию.
Требуется создать файл.htaccess,который является конфигурационным файлом web-сервера Apache. Он дает возможность управлять web-сервером и настройками web-приложения с помощью директив, без изменения основного файла конфигурации web-сервера. В данной инструкции будет использован текстовый редактор nano.
Создаем файл.htaccessв директории /usr/share/phpmyadmin/ и вносим в него следующие директивы:
Authname «Restricted Content» — сообщение для окна авторизации;
AuthUserFile /etc/phpmyadmin/.htpasswd — путь к файлу пароля, который будет использован для авторизации;
Require valid-user — директива указывает, что только авторизованные пользователи получат доступ к ресурсу.
Теперь необходимо установить пароль учетной записи.
sudohtpasswd-c/etc/phpmyadmin/.htpasswduser
где user — учетная запись.
Отправляем команду:
sudohtpasswd-c/etc/phpmyadmin/.htpasswdselectel
и дважды вводим пароль.
Вывод:
Addingpasswordforuserselectel
Далее необходимо включить использование файлов .htaccess для директории /usr/share. Для этого откроем для редактирования файл apache2.conf и внесем изменения директивы для директории.
# This is the main Apache server configuration file. It contains the# configuration directives that give the server its instructions.# See http://httpd.apache.org/docs/2.4/ for detailed information about# the directives and /usr/share/doc/apache2/README.Debian about Debian specific# hints.### Summary of how the Apache 2 configuration works in Debian:# The Apache 2 web server configuration in Debian is quite different to# upstream's suggested way to configure the web server. This is because Debian's# default Apache2 installation attempts to make adding and removing modules,# virtual hosts, and extra configuration directives as flexible as possible, in# order to make automating the changes and administering the server as easy as# possible.# It is split into several files forming the configuration hierarchy outlined# below, all located in the /etc/apache2/ directory:## /etc/apache2/# |-- apache2.conf# | `-- ports.conf# |-- mods-enabled# | |-- *.load# | `-- *.conf# |-- conf-enabled# | `-- *.conf# `-- sites-enabled# `-- *.conf### * apache2.conf is the main configuration file (this file). It puts the pieces# together by including all remaining configuration files when starting up the# web server.## * ports.conf is always included from the main configuration file. It is# supposed to determine listening ports for incoming connections which can be# customized anytime.## * Configuration files in the mods-enabled/, conf-enabled/ and sites-enabled/# directories contain particular configuration snippets which manage modules,# global configuration fragments, or virtual host configurations,# respectively.## They are activated by symlinking available configuration files from their# respective *-available/ counterparts. These should be managed by using our# helpers a2enmod/a2dismod, a2ensite/a2dissite and a2enconf/a2disconf. See# their respective man pages for detailed information.## * The binary is called apache2. Due to the use of environment variables, in# the default configuration, apache2 needs to be started/stopped with# /etc/init.d/apache2 or apache2ctl. Calling /usr/bin/apache2 directly will not# work with the default configuration.# Global configuration### ServerRoot: The top of the directory tree under which the server's# configuration, error, and log files are kept.## NOTE! If you intend to place this on an NFS (or otherwise network)# mounted filesystem then please read the Mutex documentation (available# at <URL:http://httpd.apache.org/docs/2.4/mod/core.html#mutex>);# you will save yourself a lot of trouble.## Do NOT add a slash at the end of the directory path.##ServerRoot "/etc/apache2"## The accept serialization lock file MUST BE STORED ON A LOCAL DISK.##Mutex file:${APACHE_LOCK_DIR} default## The directory where shm and other runtime files will be stored.#DefaultRuntimeDir ${APACHE_RUN_DIR}## PidFile: The file in which the server should record its process# identification number when it starts.# This needs to be set in /etc/apache2/envvars#PidFile ${APACHE_PID_FILE}## Timeout: The number of seconds before receives and sends time out.#Timeout300## KeepAlive: Whether or not to allow persistent connections (more than# one request per connection). Set to "Off" to deactivate.#KeepAliveOn## MaxKeepAliveRequests: The maximum number of requests to allow# during a persistent connection. Set to 0 to allow an unlimited amount.# We recommend you leave this number high, for maximum performance.#MaxKeepAliveRequests100## KeepAliveTimeout: Number of seconds to wait for the next request from the# same client on the same connection.#KeepAliveTimeout5# These need to be set in /etc/apache2/envvarsUser ${APACHE_RUN_USER}Group ${APACHE_RUN_GROUP}## HostnameLookups: Log the names of clients or just their IP addresses# e.g., www.apache.org (on) or 204.62.129.132 (off).# The default is off because it'd be overall better for the net if people# had to knowingly turn this feature on, since enabling it means that# each client request will result in AT LEAST one lookup request to the# nameserver.#HostnameLookupsOff# ErrorLog: The location of the error log file.# If you do not specify an ErrorLog directive within a <VirtualHost># container, error messages relating to that virtual host will be# logged here. If you *do* define an error logfile for a <VirtualHost># container, that host's errors will be logged there and not here.#ErrorLog ${APACHE_LOG_DIR}/error.log## LogLevel: Control the severity of messages logged to the error_log.# Available values: trace8, ..., trace1, debug, info, notice, warn,# error, crit, alert, emerg.# It is also possible to configure the log level for particular modules, e.g.# "LogLevel info ssl:warn"#LogLevelwarn# Include module configuration:IncludeOptionalmods-enabled/*.loadIncludeOptionalmods-enabled/*.conf# Include list of ports to listen onIncludeports.conf# Sets the default security model of the Apache2 HTTPD server. It does# not allow access to the root filesystem outside of /usr/share and /var/www.# The former is used by web applications packaged in Debian,# the latter may be used for local directories served by the web server. If# your system is serving content from a sub-directory in /srv you must allow# access here, or in any related virtual host.<Directory />OptionsFollowSymLinksAllowOverrideNoneRequirealldenied</Directory><Directory /usr/share>AllowOverrideAllRequireallgranted</Directory><Directory /var/www/>OptionsIndexesFollowSymLinksAllowOverrideNoneRequireallgranted</Directory>#<Directory /srv/># Options Indexes FollowSymLinks# AllowOverride None# Require all granted#</Directory># AccessFileName: The name of the file to look for in each directory# for additional configuration directives. See also the AllowOverride# directive.#AccessFileName.htaccess## The following lines prevent .htaccess and .htpasswd files from being# viewed by Web clients.#<FilesMatch "^\.ht">Requirealldenied</FilesMatch>## The following directives define some format nicknames for use with# a CustomLog directive.## These deviate from the Common Log Format definitions in that they use %O# (the actual bytes sent including headers) instead of %b (the size of the# requested file), because the latter makes it impossible to detect partial# requests.## Note that the use of %{X-Forwarded-For}i instead of %h is not recommended.# Use mod_remoteip instead.#LogFormat"%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""vhost_combinedLogFormat"%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\""combinedLogFormat"%h %l %u %t \"%r\" %>s %O"commonLogFormat"%{Referer}i -> %U"refererLogFormat"%{User-agent}i"agent# Include of directories ignores editors' and dpkg's backup files,# see README.Debian for details.# Include generic snippets of statementsIncludeOptionalconf-enabled/*.conf# Include the virtual host configurations:IncludeOptionalsites-enabled/*.conf
Мы рассмотрели установку и настройку phpMyAdmin на операционной системе Ubuntu 20.04. Мы разобрали основные моменты, которых достаточно для того, чтобы быстро и качественно установить данный инструмент на сервер, а также рассмотрели настройки безопасности.
Рекомендую также изучить статьи по установке и настройке phpMyAdmin на ОС CentOS 7, авторы приводят данных статей приводят более исчерпывающие настройки (вкл. оптимизацию phpMyAdmin):