Это подробная и пошаговая инструкция, как установить и настроить phpMyAdmin. Вам потребуется:
- Сервер Ubuntu 20.04, который должен иметь пользователя без прав root с правами администратора, а, также, брандмауэр, настроенный с помощью
ufw
. - Стек LAMP (Linux, Apache, MySQL и PHP), установленный на вашем сервере.
Установка phpMyAdmin
Помимо пакета phpmyadmin
, официальная документация рекомендует установить несколько расширений PHP для возможности использования определенной функциональности и улучшения производительности, а именно:
php-mbstring -
модуль для работы со строками, не поддерживающими кодировку ASCII;php-zip –
расширение, поддерживающее загрузку файлов.zip
;php-gd -
поддержка библиотеки GD Graphics;php-json -
поддержка сериализации JSON;php-curl – расширение,
позволяющее PHP взаимодействовать с разными типами серверов, используя разные протоколы.
Сначала обновите индекс пакетов сервера:
$ sudo apt update
Для запуска установки запустите команду:
$ sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
При установке необходимо выбрать следующие параметры при запросах:
- При выборе сервера выбирайте apache2.
- На вопрос о необходимости использования
dbconfig-common
для настройки базы данных, следует выбрать «Да»
. - Затем необходимо выбрать и подтвердить пароль приложения MySQL для phpMyAdmin.
Отключение компоненты Validate Password
Если вы установили MySQL, следуя руководству по установке LAMP, то, скорее всего, вы активировали плагин Validate Password. Это может вызвать ошибку при попытке задать пароль пользователя phpmyadmin:
Для устранения проблемы выберите опцию «abort», чтобы прервать процесс установки и открыть командную строку MySQL:
$ sudo mysql
Если вы активировали аутентификацию по паролю для пользователя с правами root MySQL, запустите команду:
$ mysql -u root –p
Далее, запустите команду для отключения Validate Password. Важно, что в этом случае выполняется не удаление, а простая остановка загрузки компонента на сервер MySQL:
mysql> UNINSTALL COMPONENT "file://component_validate_password";
После этого клиент MySQL можно закрыть:
mysql> exit
Затем снова установите пакет phpmyadmin
:
$ sudo apt install phpmyadmin
Далее, необходимо снова открыть командную строку MySQL с помощью sudo mysql
или mysql -u root -p
, и запустить команду повторной активации Validate Password:
$ sudo apt install phpmyadmin
В процессе установки будет добавлен файл конфигурации phpMyAdmin в каталог /etc/apache2/conf-enabled
. Для завершения настройки работы Apache и PHP с phpMyAdmin выполните инструкцию для активации расширения PHP mbstring
командой:
$ sudo phpenmod mbstring
Перезапустите Apache:
$ sudo systemctl restart apache2
Теперь phpMyAdmin установлен и настроен для работы с Apache. Однако, прежде чем вы сможете войти и начать работу с базами данных, необходимо убедиться, что у пользователей MySQL есть права для взаимодействия с программой.
Настройка доступа для рутовой учетной записи MySQL
Для рутового пользователя MySQL в Ubuntu 20.04 установлена аутентификация при помощью плагина auth_socket по умолчанию. Это позволяет обеспечивать самое оптимальное соотношение удобства использования и безопасности. В свою очередь, это создаёт сложности при предоставлении доступа к пользователю в других внешних приложениях, например, в phpMyAdmin.
Для входа в phpMyAdmin при помощи root, необходимо изменить метод аутентификации: от использования плагина auth_socket на метод, использующий пароль. Для этого нужно перейдя в командную строку MySQL:
$ sudo mysql
ввести команду вывода методов аутентификации для аккаунтов MySQL:
mysql> SELECT user, authentication_string, plugin, host FROM mysql.user;
Результат выполнения команды выглядит примерно так:
В примере можно увидеть, что пользователь root использует плагин auth_socket
. Чтобы изменить метод аутентификации запустите на выполнение команду,
обязательно изменив значение 1234567890 на надежный пароль по вашему выбору:
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY '1234567890';
Теперь необходимо снова ввести в командной строке:
mysql> SELECT user,authentication_string, plugin, host FROM mysql.user;
Вывод команды будет выглядеть следующим образом:
В результате вывод исполненной инструкции должен показать, что пользователь root использует плагин cashing_sha2_password, то есть аутентификацию с помощью пароля.
Настройка доступа для специально созданного пользователя MySQL
Безусловно, должна существовать возможность подключения к phpMyAdmin пользователя, которого вы создали специально для работы с MySQL в случае, если вы не хотите использовать учётную запись root. Чтобы воплотить это, нужно произвести следующие действия:
Войти в MySQL:
$ sudo mysql
Создать нового пользователя с надежным паролем (в данном случае пароль 1234567890 не является надёжным):
mysql> CREATE USER 'newuser'@'localhost' IDENTIFIED WITH caching_sha2_password BY '1234567890';
Обеспечить нового пользователя наличием соответствующих прав в части доступа к таблицам базы данных:
mysql> GRANT ALL PRIVILEGES ON *.* TO 'newuser'@'localhost' WITH GRANT OPTION;
После чего можно выйти из MySQL:
mysql> exit
Теперь вы сможете подключаться к веб-интерфейсу phpMyAdmin, используя имя домена или открытый IP-адрес сервера с добавлением /phpmyadmin
:
https://my-domain/phpmyadmin или https://my-ipaddress/phpmyadmin
Теперь можно войти в интерфейс phpMyAdmin через пользователя root или с новыми пользователем.
Обеспечение безопасности phpMyAdmin
Если есть необходимость дополнительно защититься от несанкционированного доступа к вашему ресурсу через web-интерфейс phpMyAdmin, можно разместить шлюз перед всем приложением с помощью встроенного в Apache функционала авторизации и аутентификации через .htaccess.
Настройка конфигурационного файла
Для этого нужно сначала активировать перезапись файла .htaccess, изменив файл конфигурации Apache вашей установки phpMyAdmin.
Отредактируйте phpmyadmin.conf, который находится в каталоге конфигурации Apache (я использовал nano):
$ sudo nano /etc/apache2/conf-available/phpmyadmin.conf
Добавьте директиву AllowOverride All
в раздел файла конфигурации <Directory /usr/share/phpmyadmin>
, например:
<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All
Добавьте эту строку, сохраните и закройте файл (при использовании nano для редактирования файла, нажмите CTRL + X, Y, а затем ENTER).
Перезапустите Apache:
$ sudo systemctl restart apache2
Создание и настройка .htaccess
Теперь, когда вы активировали использование файлов .htaccess, вам нужно создать файл для реализации этого уровня защиты.
Файл .htaccess должен находиться в папке приложения. Для этого ннеобходимо создать его и открыть в редакторе с привилегиями root следующей командой:
$ sudo nano /usr/share/phpmyadmin/.htaccess
В этот файл добавьте следующие строки:
AuthType Basic AuthName "Restricted Files" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user
- AuthType Basic – указание используемого типа аутентификации. В данном случае используется аутентификация по паролю.
- AuthName – сообщение для диалогового окна аутентификации.
- AuthUserFile – местоположение файла пароля. Важно, чтобы он находился не в обслуживаемых каталогах.
- Require valid-user – указание на возможность доступа к ресурсу для пользователей выполнивших аутентификацию.
В данном случае файла пароля находится в /etc/phpmyadmin/.htpasswd. Теперь нужно создать заявленный файл и передать его пользователю при помощью утилиты htpasswd:
$ sudo htpasswd -c /etc/phpmyadmin/.htpasswd username
Далее, необходимо дважды ввести пароль пользователя, которого вы создаете. Результатом будет созданный файл, в котором схэширован придуманный пароль.
Чтобы ввести дополнительного пользователя, необходимо использовать утилиту htpasswd без флага -c:
$ sudo htpasswd /etc/phpmyadmin/.htpasswd additionaluser
Теперь, для доступа к phpMyAdmin через web-интерфейс, необходим указать имя учетной записи и пароль:
Если имя пользователя и пароль набраны верно, вы должны будете перейти на страницу phpMyAdmin.
Нету такого пути.
The requested URL was not found on this server.
Apache/2.4.29 (Ubuntu) Server at 0.0.0.0 Port 80
2021-09-08 at 15:46спасибо
2021-12-24 at 19:13