Как установить phpMyAdmin с Nginx (LEMP) на Ubuntu 18.04 LTS

В этом руководстве я покажу вам, как установить phpMyAdmin с Nginx, MariaDB и PHP7.2 (LEMP) на Ubuntu 18.04. phpMyAdmin — это бесплатное и открытое программное обеспечение для управления базами данных через веб, написанное на PHP. Он предоставляет графический веб-интерфейс для управления базами данных MySQL или MariaDB. Вы также узнаете, как включить двухфакторную аутентификацию в phpMyAdmin.

Предварительные требования

Для выполнения этого руководства вам нужно иметь ОС Ubuntu 18.04 на вашем локальном компьютере или на удаленном сервере.

Предполагается, что вы уже установили стек LEMP на Ubuntu 18.04. Если нет, пожалуйста, ознакомьтесь с следующим руководством.

Пройдя этот этап, приступим к установке phpMyAdmin.

Шаг 1: Загрузка и установка phpMyAdmin

phpMyAdmin включен в репозиторий программного обеспечения Ubuntu 18.04, поэтому мы можем легко установить его следующей командой.

sudo apt update sudo apt install phpmyadmin

Во время установки вас попросят выбрать веб-сервер для конфигурации. Nginx отсутствует в списке, поэтому нажмите клавишу Tab и нажмите OK, чтобы пропустить этот шаг.

install-phpmyadmin-ubuntu 18.04

Затем выберите «Yes», чтобы создать новую базу данных, и позвольте dbconfig-common настроить её.

phpmyadmin nginx ubuntu 18.04

Это также создаст нового пользователя базы данных с именем phpmyadmin. Установите для этого пользователя пароль.

phpmyadmin-password-lemp-ubuntu 18.04

После завершения этого процесса будет создана новая база данных с именем phpmyadmin, и пользователь базы данных phpmyadmin получит необходимые привилегии для управления этой базой данных. Если вас, как и меня, интересует, вы можете войти в MariaDB и проверить, какие привилегии были предоставлены пользователю phpmyadmin.

Вы можете использовать следующую команду для входа на сервер MariaDB.

sudo mysql -u root

Затем проверьте привилегии.

show grants for phpmyadmin@localhost;

Как видно, пользователь phpmyadmin имеет все привилегии на базе данных phpmyadmin. Теперь вы можете выйти, выполнив:

exit;

Шаг 2: Создание блока сервера Nginx

Чтобы иметь доступ к веб-интерфейсу phpMyAdmin, нам нужно создать блок сервера Nginx, выполнив следующую команду.

Читайте также:  5 лучших стабильных дистрибутивов Linux в 2024 году

sudo nano /etc/nginx/conf.d/phpmyadmin.conf

Настроим его так, чтобы мы могли получить доступ к phpMyAdmin через поддомен. Вставьте следующий текст в файл. Замените pma.example.com на ваш фактический поддомен и не забудьте создать для него запись A.

server { listen 80; listen [::]:80; server_name pma.example.com; root /usr/share/phpmyadmin/; index index.php index.html index.htm index.nginx-debian.html; access_log /var/log/nginx/phpmyadmin_access.log; error_log /var/log/nginx/phpmyadmin_error.log; location / { try_files $uri $uri/ /index.php; } location ~ ^/(doc|sql|setup)/ { deny all; } location ~ \.php$ { fastcgi_pass unix:/run/php/php7.2-fpm.sock; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; include snippets/fastcgi-php.conf; } location ~ /\.ht { deny all; } }

Ваши файлы phpMyAdmin находятся в каталоге /usr/share/phpmyadmin/. Сохраните и закройте файл. Затем протестируйте конфигурации Nginx.

sudo nginx -t

Если тест прошел успешно, перезагрузите Nginx, чтобы изменения вступили в силу.

sudo systemctl reload nginx

Теперь вы должны иметь доступ к веб-интерфейсу phpMyAdmin по адресу

pma.example.com

phpmyadmin ubuntu 18.04

Обратите внимание, что phpMyAdmin не будет работать в последних версиях Firefox. Вы можете использовать Google Chrome для посещения веб-интерфейса phpMyAdmin. Прежде чем вводить учетные данные пользователя в форму входа, давайте включим HTTPS.

Шаг 3: Установка сертификата TLS

Для обеспечения безопасности веб-интерфейса phpMyadmin мы можем установить бесплатный сертификат TLS от Let’s Encrypt. Установите клиент Let’s Encrypt из репозитория программного обеспечения Ubuntu 18.04, как показано ниже:

sudo apt install certbot python3-certbot-nginx

Python3-certbot-nginx — это плагин Nginx для Certbot. Теперь выполните следующую команду для получения и установки сертификата TLS.

sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --must-staple -d pma.example.com --email your-email-address

  • —nginx: Использовать аутентификатор и установщик Nginx
  • —agree-tos: Согласиться с условиями использования Let’s Encrypt
  • —redirect: Добавить 301 перенаправление.
  • —hsts: Добавить заголовок Strict-Transport-Security в каждый HTTP-ответ.
  • —staple-ocsp: Включает OCSP Stapling.
  • —must-staple: Добавляет расширение OCSP Must Staple к сертификату.
  • Флаг -d за которым следует список имен доменов, разделенных запятыми. Вы можете добавить до 100 имен доменов.
  • —email: Email, используемый для регистрации и контактов по восстановлению.

Вам будет предложено, хотите ли вы получать электронные письма от EFF (Electronic Frontier Foundation). После выбора Y или N ваш сертификат TLS будет автоматически получен и настроен, что подтверждается сообщением ниже.

phpmyadmin https ubuntu 18.04

Проверьте свой сертификат TLS

Перейдите на ssllabs.com, чтобы проверить свой сертификат TLS и конфигурацию. Вы должны получить A+, потому что HSTS включен.

Читайте также:  Установка принтера Lexmark в Linux

secure phpmyadmin with https

Исправление ошибки входа

Если вы входите с учетной записью root в MariaDB, вы можете увидеть следующую ошибку.

#1698 - Access denied for user 'root '@'localhost'
mysqli_real_connect(): (HY000/1698): Access denied for user 'root '@'localhost'

Если вы входите с пользователем phpmyadmin, вы не увидите вышеуказанную ошибку. Однако пользователь phpmyadmin может использоваться только для управления базой данных phpmyadmin. Причина ошибки заключается в том, что по умолчанию пользователь root в MariaDB аутентифицируется с использованием плагина unix_socket, а не с использованием плагина mysql_native_password. Чтобы избежать этой проблемы, мы можем создать еще одного администратора и предоставить ему все привилегии.

Войдите на сервер MariaDB из командной строки.

sudo mariadb -u root

Создайте пользователя-администратора с аутентификацией по паролю.

create user admin@localhost identified by 'ваш-выбранный-пароль';

Предоставьте все привилегии на все базы данных.

grant all privileges on *.* to admin@localhost with grant option;

Сбросьте привилегии и выйдите;

flush privileges; exit;

Теперь вы можете войти в phpMyAdmin с учетной записью admin и управлять всеми базами данных.

Использование другого порта

Использование другого порта вместо стандартного порта 443 может быть выгодным, потому что вы можете закрыть этот порт, когда не используете phpMyAdmin, чтобы предотвратить взлом, или вы можете указать, какие IP-адреса имеют доступ к этому порту. Это очень просто настроить. Просто откройте файл блока сервера.

sudo nano /etc/nginx/conf.d/phpmyadmin.conf

Найдите следующие две строки:

listen [::]:443 ssl ipv6only=on; # managed by Certbot listen 443 ssl; # managed by Certbot

Измените 443 на другой порт, например, 8443.

listen [::]:8443 ssl ipv6only=on; # managed by Certbot listen 8443 ssl; # managed by Certbot

Вы также можете добавить http2, чтобы включить протокол HTTP/2.

listen [::]:8443 ssl http2 ipv6only=on; # managed by Certbot listen 8443 ssl http2; # managed by Certbot

Сохраните и закройте файл. Затем протестируйте конфигурации Nginx.

sudo nginx -t

Если тест прошел успешно, перезагрузите Nginx, чтобы изменения вступили в силу.

sudo systemctl reload nginx

Теперь вы можете получить доступ к phpMyAdmin через:

https://pma.example.com:8443

Установка последней стабильной версии phpMyAdmin

Репозиторий Ubuntu 18.04 поставляется с PHP7.2 и phpMyAdmin 4.6.6. Вы можете проверить версию phpMyAdmin в заголовке браузера.

Читайте также:  Как установить Ruby 2.2.4 на CentOS/RHEL с помощью RVM

Однако PHP7.2 поддерживается phpMyAdmin начиная с версии 4.7.4. При использовании phpMyAdmin 4.6.6 с PHP7.2 вы увидите следующее предупреждение.

parameter must be an array or an object that implements countable

parameter must be an array or an object that implements countable

Для устранения проблемы совместимости мы можем установить phpMyAdmin 4.8, который является последней стабильной версией на момент написания этого сообщения. Скачайте его с помощью wget.

wget https://files.phpmyadmin.net/phpMyAdmin/4.8.0.1/phpMyAdmin-4.8.0.1-all-languages.zip

Затем распакуйте его.

sudo apt install unzip unzip phpMyAdmin-4.8.0.1-all-languages.zip

Сделайте резервную копию оригинальных файлов phpMyAdmin.

sudo mv /usr/share/phpmyadmin /usr/share/phpmyadmin-original

Переместите phpMyadmin 4.8 в каталог /usr/share/phpmyadmin/.

sudo mv phpMyAdmin-4.8.0.1-all-languages /usr/share/phpmyadmin

Отредактируйте файл конфигурации поставщика.

sudo nano /usr/share/phpmyadmin/libraries/vendor_config.php

Найдите следующую строку.

define('CONFIG_DIR', '');
define('CONFIG_DIR', '/etc/phpmyadmin/');

Сохраните и закройте файл. Затем создайте папку tmp для хранения файлов кэша.

sudo mkdir /usr/share/phpmyadmin/tmp

Измените владельца и группу владельца на www-data.

sudo chown www-data:www-data /usr/share/phpmyadmin/tmp

Теперь вы можете использовать phpMyAdmin 4.8 без перезагрузки или перезапуска Nginx.

Включение двухфакторной аутентификации

Вы также можете усилить безопасность phpMyAdmin, включив двухфакторную аутентификацию, которая была добавлена в версии 4.8. Чтобы включить ее, войдите в phpMyAdmin. Затем перейдите в Настройки -> Двухфакторная аутентификация и выберите Приложение аутентификации (2FA).

phpmyadmin two factor authentication

После нажатия кнопки Настроить двухфакторную аутентификацию, вам будет предложен QR-код, который необходимо отсканировать с помощью приложения двухфакторной аутентификации на вашем телефоне.

configure two factor authentication phpmyadmin

Google Authenticator — популярное приложение для двухфакторной аутентификации, но я рекомендую FreeOTP, которое является открытым приложением для двухфакторной аутентификации, разработанным Red Hat. Как только вы введете код аутентификации, сгенерированный вашим приложением для двухфакторной аутентификации, двухфакторная аутентификация будет включена. Если вы выйдете и войдете снова, вам потребуется ввести код аутентификации, в дополнение к имени пользователя и паролю.

secure phpmyadmin

Автоматическое обновление сертификата

Чтобы автоматически обновлять сертификат Let’s Encrypt, просто отредактируйте файл crontab пользователя root.

sudo crontab -e

Затем добавьте следующую строку в конец файла.

@daily certbot renew --quiet && systemctl reload nginx

Флаг —quiet подавит стандартный вывод. Если вы хотите получать стандартные ошибки, добавьте следующую строку в начало файла crontab.

MAILTO=ваш-адрес-электронной-почты

Перезагрузка Nginx необходима, чтобы предоставить новый сертификат клиентам.

Надеюсь, эта статья помогла Вам установить phpMyAdmin с Nginx на Ubuntu 18.04 LTS. Как всегда, если вы нашли этот пост полезным, подпишитесь на наш бесплатный бюллетень, чтобы получать больше советов и хитростей.