Релевантные источники
- digitalocean.com -> [Установка и обеспечение безопасности phpMyAdmin в Ubuntu 20.04](https://www.digitalocean.com/community/tutorials/how-to-install-and-secure-phpmyadmin-on-ubuntu-20-04-ru)
[[Меняем порт phpMyAdmin из 443 в другое значение]]
Первым шагом необходимо установить `Apache`, `Mysql` и `PHP`
- [[Установка Apache в Ubuntu]]
- [[Установка Mysql в Ubuntu]]
- [[Установка PHP в Ubuntu]]
Обновите индекс пакетов вашего сервера от имени пользователя без прав root с привилегиями sudo:
```bash
sudo apt update
```
Перед установкой пакета `phpmyadmin`, необходимо отключить плагин `Validate Password`. Так как на момент написания этого руководства активация этого компонента будет вызывать ошибку при попытке задать пароль пользователя **phpmyadmin**.
[[Как деактивировать плагин Validate Password]]
Помимо phpMyAdmin рекомендуется установить несколько расширений PHP на ваш сервер для возможности использования определенной функциональности и улучшения производительности.
Запустите следующую команду для установки этих пакетов в систему. Обратите внимание, что процесс установки требует, чтобы вы ответили на ряд вопросов для корректной настройки phpMyAdmin. Мы кратко пробежимся по этим параметрам:
```bash
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
```
- Для выбора сервера вы можете выбрать `apache2`
> **Предупреждение.** При появлении запроса вариант «apache2» выделен, но **не** выбран. Если вы не нажмете `ПРОБЕЛ` для выбора Apache, установщик _не_ будет перемещать необходимые файлы при установке. Нажмите `ПРОБЕЛ`, затем `TAB`, а потом `ENTER` для выбора Apache.
- Выберите `Да` при ответе на вопрос о том, необходимо ли использовать `dbconfig-common` для настройки базы данных.
- Затем вам будет предложено выбрать и подтвердить пароль приложения MySQL для phpMyAdmin. Этот пароль будет назначен новому пользователю MySQL с именем `phpmyadmin`. Этот пользователь будет создан в процессе установки `phpMyAdmin` и будет использоваться для взаимодействия с базой данных. система `phpMyAdmin` будет использовать этого пользователя и указанный пароль для подключения к серверу MySQL и управления базами данных.
Если возникает такая ошибка (скриншот ниже), то значит вы не деактивировали плагин Validate Password.
[[Как деактивировать плагин Validate Password]]
![[Pasted image 20240808153833.png|400]]
Если установка прошла успешно, то можно обратно [[Как деактивировать плагин Validate Password#Активация плагина|активировать]] плагин Validate Password. Однако, каждый раз, когда вы будете создавать в Mysql пользователя, вам придётся отключать плагин.
Далее, нужно определиться, с какого пользователя Mysql заходить в веб-интерфейс phpMyAdmin. Либо создавать отдельного пользователя под это дело, либо устанавливать пароль для root и заходить через него. Я выбрал первый вариант.
### Настройка доступа по паролю для выделенного пользователя MySQL
Некоторые могут посчитать, что для их рабочего процесса лучше подходит подключение к phpMyAdmin с помощью специально выделенного пользователя. Чтобы сделать это, снова откройте командную строку MySQL:
(не указываем команду в формате `mysql -u root -p`, потому что аутентификация root у нас не по паролю )
```
sudo mysql
```
Создайте нового пользователя и придумайте для него надежный пароль:
- вместо `sammy` нужно указать имя нового пользователя.
- вместо `password` нужно указать только что придуманный пароль.
```
CREATE USER 'sammy'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'password';
```
>**Примечание**. Предыдущее выражение `CREATE USER` устанавливает аутентификацию пользователя **root** MySQL с помощью плагина `caching_sha2_password`. [Согласно официальной документации MySQL](https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password), `caching_sha2_password` считается предпочтительным плагином аутентификации MySQL, так как он обеспечивает более защищенное шифрование пароля, чем более старая, но все еще широко используемая версия `mysql_native_password`.
>
Однако некоторые версии PHP работают ненадежно с `caching_sha2_password`. [Как сообщается, эта проблема была устранена в версии PHP 7.4](https://php.watch/articles/PHP-7.4-MySQL-8-server-gone-away-fix), но если вы получите ошибку при попытке выполнить вход в phpMyAdmin позднее, вы можете задать для пользователя аутентификацию с помощью `mysql_native_password`:
Затем предоставьте вашему новому пользователю соответствующие права. Например, вы можете предоставить пользователю права доступа ко всем базам данных и их таблицам, а также можете добавлять, изменять и удалять права пользователя с помощью этой команды:
```
GRANT ALL PRIVILEGES ON *.* TO 'sammy'@'localhost' WITH GRANT OPTION;
```
После этого закройте командную строку MySQL:
```
exit
```
Теперь вы можете получить доступ к веб-интерфейсу, набрав доменное имя или открытый IP-адрес вашего сервера и добавив `/phpmyadmin`:
```
https://your_domain_or_IP/phpmyadmin
```
![[Pasted image 20240808165952.png|300]]