SCROLL
Среднее время на прочтение: 4 мин.

Установка phpMyAdmin из исходников в Debian 9 Stretch

Разберем как установить phpMyAdmin последней версии из исходников в Debian 9 Stretch. Так же рассмотрим как обезопасить доступ к нему.

 

Устанавливаем необходимые пакеты:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
apt-get install php php-common php-cli libapache2-mod-php php-gd php-mbstring php-zip php-xml php-curl php-bz2 php-mysql php-common php-tcpdf php-gettext mariadb-server -y
apt-get install php php-common php-cli libapache2-mod-php php-gd php-mbstring php-zip php-xml php-curl php-bz2 php-mysql php-common php-tcpdf php-gettext mariadb-server -y
apt-get install php php-common php-cli libapache2-mod-php php-gd php-mbstring php-zip php-xml php-curl php-bz2 php-mysql php-common php-tcpdf php-gettext mariadb-server -y

 

Скачиваем последнюю версию phpMyAdmin, распаковываем скачанный архив и перемещаем его в пользовательский каталог:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip
unzip phpMyAdmin-latest-all-languages.zip
rm phpMyAdmin-latest-all-languages.zip
mv phpMyAdmin-*-all-languages/ /usr/share/phpmyadmin
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip unzip phpMyAdmin-latest-all-languages.zip rm phpMyAdmin-latest-all-languages.zip mv phpMyAdmin-*-all-languages/ /usr/share/phpmyadmin
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.zip

unzip phpMyAdmin-latest-all-languages.zip
rm phpMyAdmin-latest-all-languages.zip
mv phpMyAdmin-*-all-languages/ /usr/share/phpmyadmin

 

Создадим каталог в котором phpMyAdmin будет хранить свои временные файлы и назначаем права доступа к нему для веб-сервера (www-data):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp chown -R www-data:www-data /var/lib/phpmyadmin
mkdir -p /var/lib/phpmyadmin/tmp
chown -R www-data:www-data /var/lib/phpmyadmin

 

Создаем базу данных и таблицы конфигурации для phpMyAdmin. Применяем поставляемый вместе с phpMyAdmin скрипт:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mariadb < /usr/share/phpmyadmin/sql/create_tables.sql
mariadb < /usr/share/phpmyadmin/sql/create_tables.sql
mariadb < /usr/share/phpmyadmin/sql/create_tables.sql

 

Создадим пользователя pma для работы с базой данных phpmyadmin и служебного пользователя (прим. jakonda) которой будет иметь доступ ко всем базам данных и правами добавлять, изменять и удалять привилегии других пользователей:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mariadb
GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'jakonda'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
mariadb GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password'; GRANT ALL PRIVILEGES ON *.* TO 'jakonda'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;
mariadb

GRANT SELECT, INSERT, UPDATE, DELETE ON phpmyadmin.* TO 'pma'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON *.* TO 'jakonda'@'localhost' IDENTIFIED BY 'password' WITH GRANT OPTION;

[stextbox id=’info’]ВАЖНО. Создавая служебного пользователя и делегируя ему широкие полномочия обязательно выберите для него надежный пароль![/stextbox]

 

Выполним конфигурацию phpMyAdmin, скопируем шаблон конфигурации для последующего его редактирования:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php
cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

 

Открываем любым удобным вам текстовым редактором файл конфигурации /usr/share/phpmyadmin/config.inc.php и раскомментируем ниже описанные параметры.

 

Для шифрования куки файлов необходимо указать строку из 32 случайных символов.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$cfg['blowfish_secret'] = 'FDBKZMFRAADMGOVSWNYNTIKXRISEYRQA'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['blowfish_secret'] = 'FDBKZMFRAADMGOVSWNYNTIKXRISEYRQA'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */
$cfg['blowfish_secret'] = 'FDBKZMFRAADMGOVSWNYNTIKXRISEYRQA'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

 

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

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';
$cfg['Servers'][$i]['controluser'] = 'pma'; $cfg['Servers'][$i]['controlpass'] = 'password';
$cfg['Servers'][$i]['controluser'] = 'pma';
$cfg['Servers'][$i]['controlpass'] = 'password';

 

Просто раскомментируем строки, без внесения в них каких либо изменений.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$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';
/* Storage database and tables */ $cfg['Servers'][$i]['pmadb'] = 'phpmyadmin'; $cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark'; $cfg['Servers'][$i]['relation'] = 'pma__relation'; $cfg['Servers'][$i]['table_info'] = 'pma__table_info'; $cfg['Servers'][$i]['table_coords'] = 'pma__table_coords'; $cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages'; $cfg['Servers'][$i]['column_info'] = 'pma__column_info'; $cfg['Servers'][$i]['history'] = 'pma__history'; $cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs'; $cfg['Servers'][$i]['tracking'] = 'pma__tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma__userconfig'; $cfg['Servers'][$i]['recent'] = 'pma__recent'; $cfg['Servers'][$i]['favorite'] = 'pma__favorite'; $cfg['Servers'][$i]['users'] = 'pma__users'; $cfg['Servers'][$i]['usergroups'] = 'pma__usergroups'; $cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding'; $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';
/* Storage database and tables */
$cfg['Servers'][$i]['pmadb'] = 'phpmyadmin';
$cfg['Servers'][$i]['bookmarktable'] = 'pma__bookmark';
$cfg['Servers'][$i]['relation'] = 'pma__relation';
$cfg['Servers'][$i]['table_info'] = 'pma__table_info';
$cfg['Servers'][$i]['table_coords'] = 'pma__table_coords';
$cfg['Servers'][$i]['pdf_pages'] = 'pma__pdf_pages';
$cfg['Servers'][$i]['column_info'] = 'pma__column_info';
$cfg['Servers'][$i]['history'] = 'pma__history';
$cfg['Servers'][$i]['table_uiprefs'] = 'pma__table_uiprefs';
$cfg['Servers'][$i]['tracking'] = 'pma__tracking';
$cfg['Servers'][$i]['userconfig'] = 'pma__userconfig';
$cfg['Servers'][$i]['recent'] = 'pma__recent';
$cfg['Servers'][$i]['favorite'] = 'pma__favorite';
$cfg['Servers'][$i]['users'] = 'pma__users';
$cfg['Servers'][$i]['usergroups'] = 'pma__usergroups';
$cfg['Servers'][$i]['navigationhiding'] = 'pma__navigationhiding';
$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';

 

В конец конфигурационного файла добавим строку указывающую на ранее созданный каталог для временных файлов phpMyAdmin.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';
$cfg['TempDir'] = '/var/lib/phpmyadmin/tmp';

 

Теперь настроим веб-сервер Apache для работы с phpMyAdmin. Для этого создаем файл конфигурации для Apache.

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
touch /etc/apache2/conf-available/phpmyadmin.conf
touch /etc/apache2/conf-available/phpmyadmin.conf
touch /etc/apache2/conf-available/phpmyadmin.conf

 

В созданный файл /etc/apache2/conf-available/phpmyadmin.conf вносим следующее содержание:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
# phpMyAdmin default Apache configuration
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
<IfModule mod_php5.c>
<IfModule mod_mime.c>
AddType application/x-httpd-php .php
</IfModule>
<FilesMatch ".+\.php$">
SetHandler application/x-httpd-php
</FilesMatch>
php_flag magic_quotes_gpc Off
php_flag track_vars On
php_flag register_globals Off
php_admin_flag allow_url_fopen Off
php_value include_path .
php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
php_admin_value open_basedir /usr/share/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/tcpdf/
</IfModule>
</Directory>
# phpMyAdmin default Apache configuration <Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All <IfModule mod_php5.c> <IfModule mod_mime.c> AddType application/x-httpd-php .php </IfModule> <FilesMatch ".+\.php$"> SetHandler application/x-httpd-php </FilesMatch> php_flag magic_quotes_gpc Off php_flag track_vars On php_flag register_globals Off php_admin_flag allow_url_fopen Off php_value include_path . php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp php_admin_value open_basedir /usr/share/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/tcpdf/ </IfModule> </Directory>
# phpMyAdmin default Apache configuration
<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All

    <IfModule mod_php5.c>
        <IfModule mod_mime.c>
            AddType application/x-httpd-php .php
        </IfModule>
        <FilesMatch ".+\.php$">
            SetHandler application/x-httpd-php
        </FilesMatch>

        php_flag magic_quotes_gpc Off
        php_flag track_vars On
        php_flag register_globals Off
        php_admin_flag allow_url_fopen Off
        php_value include_path .
        php_admin_value upload_tmp_dir /var/lib/phpmyadmin/tmp
        php_admin_value open_basedir /usr/share/phpmyadmin/:/var/lib/phpmyadmin/:/usr/share/php/php-gettext/:/usr/share/php/tcpdf/
    </IfModule>
</Directory>

 

Включаем созданную конфигурацию:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
a2enconf phpmyadmin.conf && /etc/init.d/apache2 reload
a2enconf phpmyadmin.conf && /etc/init.d/apache2 reload
a2enconf phpmyadmin.conf && /etc/init.d/apache2 reload

 

Теперь можно получить доступ к странице входа в phpMyAdmin, для этого откройте следующий URL-адрес в веб-браузере — http://your_domain/phpmyadmin

Настройка безопасности

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

 

В файле конфигурации /etc/apache2/conf-available/phpmyadmin.conf изменяем имя входа в phpMyAdmin с https://your_domain/phpmyadmin на прим. https://your_domain/restrictedarea:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
Alias /restrictedarea /usr/share/phpmyadmin
Alias /restrictedarea /usr/share/phpmyadmin
Alias /restrictedarea /usr/share/phpmyadmin

 

Следующим шагом мы укажем необходимость дополнительной авторизации для доступа к защищенной странице. Кстати в этом случае от нежелательных глаз так же будет скрыто содержание защищаемой страницы до момента авторизации.

 

В файле конфигурации /etc/apache2/conf-available/phpmyadmin.conf добавляем следующие директивы (если они не были добавлены ранее):

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
<Directory /usr/share/phpmyadmin>
Options FollowSymLinks
DirectoryIndex index.php
AllowOverride All
<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All
<Directory /usr/share/phpmyadmin>
    Options FollowSymLinks
    DirectoryIndex index.php
    AllowOverride All

 

Создаем файл .htaccess в рабочем каталоге phpMyAdmin с описанием правил рестрикций:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
cat << EOF > /usr/share/phpmyadmin/.htaccess
AuthType Basic
AuthName "Restricted Access"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
EOF
cat << EOF > /usr/share/phpmyadmin/.htaccess AuthType Basic AuthName "Restricted Access" AuthUserFile /etc/phpmyadmin/.htpasswd Require valid-user EOF
cat << EOF > /usr/share/phpmyadmin/.htaccess
AuthType Basic 
AuthName "Restricted Access"
AuthUserFile /etc/phpmyadmin/.htpasswd
Require valid-user
EOF

 

Создадим каталог заданный в директиве AuthUserFile для хранения файла с паролями и затем создадим сам файл с паролями:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
mkdir -p /etc/phpmyadmin/
htpasswd -c /etc/phpmyadmin/.htpasswd username
mkdir -p /etc/phpmyadmin/ htpasswd -c /etc/phpmyadmin/.htpasswd username
mkdir -p /etc/phpmyadmin/
htpasswd -c /etc/phpmyadmin/.htpasswd username

[stextbox id=’info’]ИНФОРМАЦИЯ. Будет предложено выбрать и подтвердить пароль нового пользователя. После этого файл .htpasswd будет создан, а только что введённый пароль будет помещен в него в хэшированном виде.[/stextbox]

 

Чтобы добавить в файл еще одного пользователя, используйте вышеприведенную команду без флага –с:

Plain text
Copy to clipboard
Open code in new window
EnlighterJS 3 Syntax Highlighter
htpasswd /etc/phpmyadmin/.htpasswd username
htpasswd /etc/phpmyadmin/.htpasswd username
htpasswd /etc/phpmyadmin/.htpasswd username

 

Теперь при входе в phpMyAdmin будут запрашиваться дополнительно учетные данные пользователя:

 

ПОНРАВИЛАСЬ ИЛИ ОКАЗАЛАСЬ ПОЛЕЗНОЙ СТАТЬЯ, ПОДДЕРЖИ АВТОРА ДОНАТОМ

Обсуждение

1 комментариев
  • Доброго времени суток! Помогите пожалуйста с одной проблемой по видеорегистраторам. Заранее спасибо!