
phpMyAdmin: Установка на Debian c nginx.
08.02.2016
Так как стандартная установка через apt-get притягивает за собой кучу не нужных нам зависимостей, например apache2, php5 вместо php7.0. Мы установим этот удобный инструмент вручную. Будет он работать у нас на LEMP стеке (связка nginx+php7.0-fpm+mariadb), по установке и настройке которого можно узнать из этой статьи. Предпологаем, что мы работаем из-под root-пользователя.
Установка phpmyadmin
Сменим директорию на /usr/share:
cd /usr/share
Скачаем свежий архив:
wget https://files.phpmyadmin.net/phpMyAdmin/4.5.4.1/phpMyAdmin-4.5.4.1-all-languages.zip
Распакуем архив: (перед этим необходимо установить пакет unzip):
apt-get install -y unzip unzip phpMyAdmin-4.5.4.1-all-languages.zip
Переименуем папку и удалим архив:
mv phpMyAdmin-4.5.4.1-all-languages phpmyadmin rm phpMyAdmin-4.5.4.1-all-languages.zip
Сменим права:
chmod -R 0755 /usr/share/phpmyadmin
Настройка nginx
Я повесил pma на не стандартный порт и поддомен, чтобы ботам сложнее было его искать. Вместо domain.ltd подставляем свой домен.
Создадим файл настроек:
nano /etc/nginx/sites-available/pma.conf
С содержимым:
server { listen 85; server_name pma.domain.ltd; root /usr/share/phpmyadmin; index index.php; client_max_body_size 32m; access_log off; error_log /var/log/nginx/pma.error.log; location ~ .php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; fastcgi_index index.php; include fastcgi_params; fastcgi_intercept_errors on; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } location ~* \.(ico|css|js)(\?[0-9]+)?$ { expires max; log_not_found off; } location = /favicon.ico { log_not_found off; access_log off; } location = /robots.txt { allow all; log_not_found off; access_log off; } location ~ /\. { deny all; access_log off; log_not_found off; } }
Активируем конфиг и перезапустим nginx:
ln -s /etc/nginx/sites-available/pma.conf /etc/nginx/sites-enabled/pma.conf service nginx restart
На этом базовая установка завершена, но мы еще настроим расширенные возможности.
Настройка MariaDB
Создадим базу и дадим нужные привелегии для расширенных возможностей pma, например закладки и история.
Войдем в базу:
mysql -u root -p
Выполним данные команды, «pmapass» желательно заменить на стойкий пароль. Тут мы создаем базу, пользователя и даем ему необходимые права.
CREATE DATABASE phpmyadmin; GRANT USAGE ON mysql.* TO 'pmauser'@'localhost' IDENTIFIED BY 'pmapass'; GRANT SELECT ( Host, User, Select_priv, Insert_priv, Update_priv, Delete_priv, Create_priv, Drop_priv, Reload_priv, Shutdown_priv, Process_priv, File_priv, Grant_priv, References_priv, Index_priv, Alter_priv, Show_db_priv, Super_priv, Create_tmp_table_priv, Lock_tables_priv, Execute_priv, Repl_slave_priv, Repl_client_priv ) ON mysql.user TO 'pmauser'@'localhost'; GRANT SELECT ON mysql.db TO 'pmauser'@'localhost'; GRANT SELECT ON mysql.host TO 'pmauser'@'localhost'; GRANT SELECT (Host, Db, User, Table_name, Table_priv, Column_priv) ON mysql.tables_priv TO 'pmauser'@'localhost'; GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pmauser'@'localhost';
Заливаем структуру таблиц:
mysql -u USER -pPASSWORD phpmyadmin < /usr/share/phpmyadmin/sql/create_tables.sql
Создаем конфиг phpmyadmin:
nano /usr/share/phpmyadmin/config.inc.php
С содержимым:
<?php $i = 0; $i++; $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'socket'; $cfg['Servers'][$i]['auth_type'] = 'cookie'; $cfg['Servers'][$i]['user'] = ''; $cfg['Servers'][$i]['password'] = ''; $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['controluser'] = 'pmauser'; $cfg['Servers'][$i]['controlpass'] = 'pmapass'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['designer_coords'] = 'pma__designer_coords'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['savedsearches'] = 'pma__savedsearches'; $cfg['Servers'][$i]['central_columns'] = 'pma__central_columns'; $cfg['Servers'][$i]['designer_settings'] = 'pma__designer_settings'; $cfg['Servers'][$i]['export_templates'] = 'pma__export_templates'; $cfg['DefaultLang'] = 'ru'; $cfg['ServerDefault'] = 1; $cfg['blowfish_secret'] = '325y28f8f3krj383q'; $cfg['ForceSSL'] = false; ?>
Пишем произвольную фразу в blowfish_secret для безопасности и активируем SSL(если установлен сертификат) ForceSSL = true.
Выставим права на всякий случай:
chown www-data:www-data /usr/share/phpmyadmin/config.inc.php
Результать ниже на стриншоте.
На этом настройку можно закончить, но я хотел бы еще рассмотреть возможность http-аунтификации.
Добавляем HTTP авторизацию
Для начала нам необходимо сгенерировать хеш пароля. Есть стандартные улититы из Apache, но мы не будем их использовать, так как у нас нет необходимости в установке целого пакета с зависимостями. Для этого дела есть замечательный Online генератор, полученный хеш и логин записываем в файл и назовем его htpasswd(принципиального значения это не имеет).
nano /usr/share/phpmyadmin/htpasswd
Так же данный файл можно положить в любое другое место, только удостоверьтесь, что nginx сможет прочитать его. Запись будет выглядить следующем образом (admin — логин, password — пароль):
admin:ZIXt0E7AewSr2
Теперь добавляем в конфиг секцию для авторизации
auth_basic "Enter password"; auth_basic_user_file /usr/share/phpmyadmin/htpasswd;
Проверяем конфиг и перезапускам Nginx:
nginx -t service nginx restart
Переходим по адресу httр://pma.domain.ltd:85, выскочит окно с предложением ввода логина и пароля, пишем логин admin пароль password и попадаем в phpMyAdmin
На этом установку можно завершить.
Обо всех найденных ошибках, а также, предложения по улучшению и просто возникших вопросах-прошу в комментарии.