Будем считать, что у вас уже есть сервер с настроенным и работающим сайтом. Доменное имя у него пусть будет phpmyadmin.site.
Для начала вам нужно закачать в корневую или любую другую директорию сайта (на ваш выбор) архив phpmyadmin. Скачивать мы будем с официального сайта: https://www.phpmyadmin.net
Теперь у нас есть два варианта развития событий:
- Закачать напрямую через wget ssh консоль сервера;
- Скачать архив себе на компьютер, а затем уже закачать и распаковать или закачать распакованную версию на ваш сайт через sftp/ftp.
Во верхнем правом углу видим кнопку «Download 5.x.x», нажимаем её и скачиваем к себе на компьютер, а потом закачиваем к себе на сайт или же, дабы упростить это действие я закачиваю напрямую на свой сервер:
Перехожу в корневую директорию своего сайта:
cd /home/phpmyadmin_site/www
Копирую адрес ссылки phpmyadmin c официального сайта (наводим курсор мышки на кнопку DOWNLOAD, ПКМ, копировать адрес ссылки)
Возвращаемся в консоль сервера и закачиваем:
wget https://files.phpmyadmin.net/phpMyAdmin/5.x.x/phpMyAdmin-4.x.x-all-languages.zip
Не забывайте, что у вас будет другая версия phpmyadmin и 5.x.x будет отличаться.
Распаковываем скачанный архив:
unzip phpMyAdmin-5.x.x-all-languages.zip
Удаляем архив:
rm phpMyAdmin-5.x.x-all-languages.zip
Если вам нужно поместить phpmyadmin не в корневую директорию, то можно просто переименовать папку командой:
mv ./phpMyAdmin-5.x.x-all-languages ./phpma
Можно же переместить файлы в корневую директорию вашего сайта через mc, например.
Теперь можно перейти по адресу phpmyadmin вашего сервера:
http(s)://phpmyadmin.site/phpma
И попробовать авторизоваться под пользователем root и его паролем. Скорее всего вы получите ошибку вида:
mysqli_real_connect(): (HY000/1698): Access denied for user 'root'@'localhost'
На серверах с Ubuntu, использующей MySQL 5.7 (и более поздние версии), пользователь root в MySQL по умолчанию аутентифицируется с помощью плагина auth_socket
, а не по паролю. Это в целом более безопасно и удобно во многих случаях, но не в случае, когда вам необходимо организовать доступ к MySQL со стороны сторонней программы, например, phpMyAdmin.
Для того, чтобы пользователь root в MySQL мог использовать пароль для входа в систему вам необходимо изменить метод аутентификации с auth_socket
на mysql_native_password
. Для этого войдите в оболочку MySQL следующей командой:
sudo mysql
Далее проверьте, какой метод аутентификации используется для каждого из ваших пользователей MySQL:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Скорее всего вывод будет приблизительно таким:
Вывод
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | | auth_socket | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC944277A401A7D25BE1CA89AFF17BF607F8707F | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
В этом примере ваш пользователь root использует аутентификацию с помощью плагина auth_socket
. Для изменения этой настройки на использование пароля используйте следующую команду ALTER USER
. Не забудьте изменить password
на ваш сильный пароль:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
password нужно заменить на ваш пароль для root пользователя
Далее выполните команду FLUSH PRIVILEGES
, которая применит внесённые изменения:
FLUSH PRIVILEGES;
Проверьте методы авторизации для пользователей ещё раз для того, чтобы убедиться, что пользователь root более не использует плагин auth_socket
для авторизации:
SELECT user,authentication_string,plugin,host FROM mysql.user;
Вывод
+------------------+-------------------------------------------+-----------------------+-----------+
| user | authentication_string | plugin | host |
+------------------+-------------------------------------------+-----------------------+-----------+
| root | *8656DACC8616D997782ADD0839F92C1571D6FDDA | mysql_native_password | localhost |
| mysql.session | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| mysql.sys | *THISISNOTAVALIDPASSWORDTHATCANBEUSEDHERE | mysql_native_password | localhost |
| debian-sys-maint | *CC944277A401A7D25BE1CA89AFF17BF607F8707F | mysql_native_password | localhost |
+------------------+-------------------------------------------+-----------------------+-----------+
4 rows in set (0.00 sec)
Как можно видеть на представленном выводе теперь root пользователь MySQL аутентифицируется с использованием пароля. После того, как мы в этом убедились, можно выйти из оболочки MySQL:
exit
Больше полезной информации по авторизации mysql: https://www.digitalocean.com/community/tutorials/mysql-ubuntu-18-04-ru
После чего вы вновь можете зайти в phpmyadmin через браузер с логином root и его паролем. Скорее всего вы успешно авторизуетесь, но в панели phpMyAdmin вы увидете множество алертов, вроде следующих:
Хранилище конфигурации phpMyAdmin не полностью настроено, некоторые расширенные функции были отключены. Узнайте причину.
Или перейдите на вкладку 'Операции' любой базы данных, чтобы настроить хранилище в ней.
При работе с многобайтными кодировками без установленного PHP расширения mbstring phpMyAdmin не в состоянии производить корректное разбиение строк, что может привести к непредсказуемым результатам.
В конфигурационном файле необходимо задать парольную фразу (blowfish_secret).
$Cfg['TempDir'] (./tmp/) недоступен. Из-за этого phpMyAdmin не может кэшировать шаблоны и будет медленным.
Далее нам нужно настроить phpmyadmin
Копируем образец конфигурационного файла phpmyadmin:
cp ./phpma/config.sample.inc.php ./phpma/config.inc.php
Редактируем конфиг:
sudo nano ./phpma/config.inc.php
Первым делом нужно задать секретный blowfish ключ, который будет состоять из 32 символов:
$cfg['blowfish_secret'] = ''; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Вставляем что-то вроде этого:
$2a$58$iMaKE1DFydKAKNQPGR631uXjN75C0PT37x2xacokFCpZgcbm42G1q
В итоге получаете:
$cfg['blowfish_secret'] = '$2a$58$iMaKE1DFydKAKNQPGR631uXjN75C0PT37x2xacokFCpZgcbm42G1q'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
Избавляемся от ошибки связанной с отсутствием расширения php-mbstring
Для избавления от следующей ошибки
При работе с многобайтными кодировками без установленного PHP расширения mbstring phpMyAdmin не в состоянии производить корректное разбиение строк, что может привести к непредсказуемым результатам.
Просто устанавливаем соответствующее расширение:
sudo apt install php-mbstring
После чего отправляем команду перечитать конфиги сервер Apache:
sudo service apache2 reload
Избавляемся от ошибки кэширования шаблонов phpmyadmin
Сама ошибка выглядит следующим образом:
$Cfg['TempDir'] (./tmp/) недоступен. Из-за этого phpMyAdmin не может кэшировать шаблоны и будет медленным.
Возникает она из-за отсутствия в директории phpmyadmin папки tmp или из-за отсутствия прав на запись в неё.
Решить эту проблему можно двумя способами:
- Создать новую папку tmp в директории phpmyadmin
- Указать путь до вашей основной tmp папки сайта
В первом случае делаем следующее
Переходим в папку phpmyadmin:
cd ./phpma
Проверяем наличие папки:
ls -la
Если папка отсутствует, то создаем её:
mkdir ./tmp
Теперь нужно убедиться, что пользователь (или группа), на котором запущен веб-сервер (например, Apache), имеет доступ на запись во вновь созданную папку tmp. Следовательно, измените владельца на этого пользователя или добавьте права на запись для всех пользователей. Последний не может быть действительно целесообразным.
sudo chown -R phpmyadmin_site:www-data ./tmp
phpmyadmin_site нужно заменить на имя пользователя, от которого работает этот сайт
(изменение владельца файла или папки вводится так:chown пользовать:группа файл/папка
)
Во втором варианте поступаем иначе
Открываем конфигурационный файл phpmyadmin
sudo nano ./config.inc.php
И вставляем следующую строчку:
$cfg['TempDir'] = '/home/phpmyadmin_site/temp';
/home/phpmyadmin_site/temp нужно заменить на основную tmp директорию вашего сайта. Так же можно заменить её на ../../tmp
Я вставлял после следующих строчек:
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['compress'] = false;
$cfg['Servers'][$i]['AllowNoPassword'] = false;
Избавляемся от алерта хранилища конфигурации phpMyAdmin
Выглядит этот алерт следующим образом:
Хранилище конфигурации phpMyAdmin не полностью настроено, некоторые расширенные функции были отключены. Узнайте причину.
Или перейдите на вкладку 'Операции' любой базы данных, чтобы настроить хранилище в ней.
Исправляем:
Нажимаем «Узнайте причину». Далее выскочит следующее сообщение.
Создать базу данных с именем 'phpmyadmin' и настроить там хранение конфигурации phpMyAdmin.
Нажимаем создать, phpMyAdmin сделает все сам.
Теперь можно работать.