Настройка phpMyAdmin: варианты и примеры config.inc.php
phpMyAdmin это популярный веб-инструмент для управления базами данных MySQL и MariaDB. Основная конфигурация задается в файле config.inc.php, расположенном в корневой директории приложения. Ниже рассматриваются основные параметры, методы аутентификации и решения типичных проблем.
Настройка аутентификации и серверов
Как настроить вход через веб-форму с использованием cookie?
Рекомендуемый метод аутентификации для большинства случаев: auth_type = 'cookie'. Пользователь вводит логин и пароль при каждом входе, данные шифруются и сохраняются в cookie. Обязательно указать blowfish_secret – произвольную строку для шифрования пароля.
<?php
$cfg['blowfish_secret'] = 'sEcReTk3y12345';
$i = 1;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
?>
Moodle config php (php: конфигурация moodle (config.php))
После сохранения файла при открытии phpMyAdmin появится форма входа. Учетные данные проверяются при каждом запросе.
Типичная ошибка: если не задан blowfish_secret, phpMyAdmin выдает предупреждение «The configuration file now needs a secret passphrase (blowfish_secret)». Решение – добавить строку с любым набором символов длиной не менее 32.
Также при включенном AllowNoPassword без пароля вход разрешен, но на production сервере эту опцию лучше отключить, установив false.
Как сделать автоматический вход без запроса пароля?
Метод auth_type = 'config' позволяет задать логин и пароль непосредственно в файле конфигурации. Пользователь не видит форму входа.
<?php
$cfg['blowfish_secret'] = 'sEcReTk3y12345';
$i = 1;
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '123456';
?>
Phpmyadmin config inc php (php: конфигурация phpmyadmin (config.inc.php))
При такой настройке пароль хранится в открытом виде. Рекомендуется использовать только для локальной разработки или при защите доступа к папке через .htaccess.
Проблема безопасности: если файл config.inc.php доступен для чтения веб-сервером, пароль может быть скомпрометирован. Решение – ограничить права на файл (например, 600) или использовать аутентификацию cookie.
Как использовать HTTP-аутентификацию для защиты phpMyAdmin?
Метод auth_type = 'http' заставляет браузер показывать стандартное диалоговое окно HTTP-аутентификации. Логин и пароль передаются в заголовках запроса (Base64), не шифруются без HTTPS.
<?php
$cfg['blowfish_secret'] = 'sEcReTk3y12345';
$i = 1;
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
?>
Config config php домен (php: настройка конфигурации для домена)
Этот вариант бывает полезен при интеграции с внешними системами аутентификации. Недостаток – отсутствие страницы выхода (браузер кеширует учетные данные).
Ошибка: если phpMyAdmin работает через CGI/FastCGI, HTTP-аутентификация может не поддерживаться. Решение – переключиться на cookie.
Как добавить несколько серверов MySQL в список выбора?
Для работы с несколькими серверами увеличивается счетчик $i и добавляются новые блоки конфигурации. Каждый сервер может иметь свои параметры аутентификации.
<?php
$cfg['blowfish_secret'] = 'sEcReTk3y12345';
$i = 1;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$i = 2;
$cfg['Servers'][$i]['host'] = '192.168.1.100';
$cfg['Servers'][$i]['port'] = '3306';
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['user'] = 'remote_user';
$cfg['Servers'][$i]['password'] = 'remote_pass';
$cfg['Servers'][$i]['verbose'] = 'Production server';
$i = 3;
$cfg['Servers'][$i]['host'] = 'mysql.example.com';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['ssl'] = true;
?>
Wp admin config php (php: конфигурация wordpress (wp-admin/config.php))
При входе phpMyAdmin покажет выпадающий список серверов с именами из verbose (если задано) или адресами.
Типичная проблема: при подключении к удаленному серверу может возникнуть ошибка «#2002 – Нет такого файла или каталога». Причина – неверно указан хост или порт, либо на сервере отключен удаленный доступ. Проверить настройки MySQL (bind-address, port).
Как повысить безопасность phpMyAdmin: blowfish_secret и ограничения?
Blowfish_secret обязателен для шифрования паролей в cookie. Также полезно отключить анонимный вход, ограничить доступ по IP и использовать отдельного пользователя MySQL с ограниченными правами.
<?php
$cfg['blowfish_secret'] = 'сложная_строkа_длиной_32_символа';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['user'] = 'pma_user';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['only_db'] = 'mydb';
$cfg['Servers'][$i]['hide_db'] = 'information_schema';
?>
Config php host (php: настройка host в конфигурационном файле)
В данном примере настроен доступ только к базе mydb, скрыта системная база, а пароль не хранится в файле (пользователь вводит его при входе).
Ошибка: если blowfish_secret изменить после создания cookie, предыдущие сессии станут недействительными – пользователю придется войти заново.
Как настроить каталоги для импорта и экспорта файлов?
Директивы UploadDir и SaveDir упрощают загрузку SQL-файлов на сервер и скачивание дампов.
<?php
$cfg['UploadDir'] = '/var/lib/phpmyadmin/upload';
$cfg['SaveDir'] = '/var/lib/phpmyadmin/save';
?>
Config ini php (php: настройка php.ini)
Каталоги должны существовать и быть доступны для записи веб-серверу. После настройки в интерфейсе phpMyAdmin появляется кнопка «Выбрать файл» с возможностью указать файл из UploadDir.
Проблема: если каталог не существует или нет прав на запись, phpMyAdmin не покажет список файлов. Решение – создать папки и установить правильные права (например, 755 для пользователя www-data).
Как изменить тему оформления phpMyAdmin?
phpMyAdmin поддерживает смену тем через конфигурацию. По умолчанию используется тема «pmahomme». Можно выбрать другую из папки themes.
<?php
$cfg['ThemeManager'] = true;
$cfg['ThemeDefault'] = 'dark';
$cfg['ThemePerServer'] = false;
?>
Php config connect (php: настройка подключения к базе данных в config)
Параметр ThemeManager включает возможность смены темы пользователем. ThemeDefault задает тему по умолчанию. Если установлен ThemePerServer, каждый сервер может иметь свою тему.
Ошибка: если тема не найдена, phpMyAdmin использует стандартную. Убедиться, что папка с темой присутствует в каталоге themes.
Как задать язык интерфейса по умолчанию?
Для фиксации языка можно использовать директиву DefaultLang.
<?php
$cfg['DefaultLang'] = 'ru';
$cfg['Lang'] = 'ru';
?>
Первый параметр определяет язык по умолчанию, второй – принудительно устанавливает язык, отключая выбор пользователем.
Проблема: если файлы перевода отсутствуют, язык может не примениться. Установить соответствующую локализацию или использовать только DefaultLang.
Расширенные примеры конфигурации
Полный файл config.inc.php для многосерверного окружения
<?php
/* Секретный ключ для шифрования – обязательно сгенерировать */
$cfg['blowfish_secret'] = 'f2a1e5d7c8b9e0f1a2b3c4d5e6f7a8b9';
/* Первый сервер – локальный с cookie-аутентификацией */
$i = 1;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['user'] = 'root';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['verbose'] = 'Локальный сервер';
/* Второй сервер – удаленный с явным логином/паролем */
$i = 2;
$cfg['Servers'][$i]['auth_type'] = 'config';
$cfg['Servers'][$i]['host'] = '192.168.1.10';
$cfg['Servers'][$i]['port'] = 3307;
$cfg['Servers'][$i]['user'] = 'admin';
$cfg['Servers'][$i]['password'] = 'SuperSecr3t!';
$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['verbose'] = 'Удаленный сервер';
/* Третий сервер – через socket */
$i = 3;
$cfg['Servers'][$i]['auth_type'] = 'cookie';
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['socket'] = '/var/run/mysqld/mysqld.sock';
$cfg['Servers'][$i]['verbose'] = 'Локальный сокет';
/* Общие настройки */
$cfg['DefaultLang'] = 'ru';
$cfg['UploadDir'] = '/srv/phpmyadmin/upload';
$cfg['SaveDir'] = '/srv/phpmyadmin/save';
$cfg['ThemeDefault'] = 'original';
?>
После применения конфигурации при входе отображается выпадающий список с тремя серверами, каждый подписан своим 'verbose'. Для сервера через socket подключение происходит быстрее, так как не используется TCP/IP.
Настройка phpMyAdmin для работы через HTTPS и использование сертификатов
<?php
$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['ssl_key'] = '/etc/mysql/client-key.pem';
$cfg['Servers'][$i]['ssl_cert'] = '/etc/mysql/client-cert.pem';
$cfg['Servers'][$i]['ssl_ca'] = '/etc/mysql/ca-cert.pem';
$cfg['Servers'][$i]['ssl_verify'] = true;
?>
phpMyAdmin будет подключаться к MySQL через зашифрованное соединение. Если сертификаты не настроены, соединение завершится ошибкой. Параметр 'ssl_verify' включает проверку цепочки сертификатов.
Использование условной логики для разных сред
<?php
if (getenv('APPLICATION_ENV') === 'development') {
$cfg['Servers'][$i]['host'] = 'localhost';
$cfg['Servers'][$i]['AllowNoPassword'] = true;
} else {
$cfg['Servers'][$i]['host'] = 'prod-db.example.com';
$cfg['Servers'][$i]['AllowNoPassword'] = false;
$cfg['Servers'][$i]['ssl'] = true;
}
?>
При переменной окружения APPLICATION_ENV=development phpMyAdmin подключается к локальному MySQL без пароля, что удобно для разработки. На продакшене включается SSL и запрещен вход без пароля.
Настройка кастомной страницы входа и логотипа
<?php
$cfg['LoginCookieValidity'] = 3600;
$cfg['LoginCookieRecall'] = 'last';
$cfg['PmaAbsoluteUri'] = 'https://pma.example.com';
$cfg['LogoLink'] = 'https://example.com';
$cfg['Logo'] = 'images/custom_logo.png';
?>
Время жизни сессии увеличено до 1 часа, после закрытия браузера запоминается последний сервер. Абсолютный URI обязателен для корректной работы при перенаправлениях. Логотип заменен на собственный файл.
Отключение неиспользуемых функций для повышения безопасности
<?php
$cfg['ShowChgPassword'] = false;
$cfg['ShowCreateDb'] = false;
$cfg['ShowGitRevision'] = false;
$cfg['ShowServerInfo'] = false;
$cfg['ShowDatabasesNavigationAsTree'] = false;
$cfg['NavigationTreeEnableGrouping'] = false;
$cfg['MaxNavigationItems'] = 50;
?>
Пользователь не увидит формы смены пароля и создания базы данных, а также служебную информацию. Навигация упрощена – отключается группировка баз данных в дереве, число элементов ограничено.