MySQL, phpMyAdmin · 4 min read · Jan 29, 2026
Управление несколькими серверами MySQL из одной установки phpMyAdmin (с использованием SSL-шифрования) - Страница 2
3 Настройка phpMyAdmin
local.example.com:
Перед тем как продолжить настройку phpMyAdmin, давайте сначала проверим, можем ли мы действительно подключиться с local.example.com к серверу MySQL на remote.example.com (через SSL-соединение):
mysql --ssl-ca=/etc/mysql/newcerts/ca-cert.pem --ssl-cert=/etc/mysql/newcerts/client-cert.pem --ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -pВас попросят ввести пароль, и если все пройдет хорошо, вам будет предоставлен доступ:
root@local:/etc/mysql/newcerts# mysql –ssl-ca=/etc/mysql/newcerts/ca-cert.pem –ssl-cert=/etc/mysql/newcerts/client-cert.pem –ssl-key=/etc/mysql/newcerts/client-key.pem -h remote.example.com -u root -p
Введите пароль:
Добро пожаловать в монитор MySQL. Команды заканчиваются на ; или \g.
Ваш идентификатор соединения MySQL: 101
Версия сервера: 5.5.24-8-log (Debian)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. Все права защищены.Oracle является зарегистрированным товарным знаком Oracle Corporation и/или ее
филиалов. Другие названия могут быть товарными знаками их соответствующих
владельцев.
Введите 'help;' или '\h' для получения справки. Введите '\c' для очистки текущего ввода.mysql>Введите
quit;чтобы выйти из оболочки MySQL.
Теперь мы переходим к части, где настраиваем phpMyAdmin - я предполагаю, что вы уже можете использовать phpMyAdmin для подключения к локальному серверу MySQL, и теперь мы хотим настроить его так, чтобы мы могли подключаться к remote.example.com также с использованием SSL (на экране входа phpMyAdmin будет выпадающее меню, из которого вы можете выбрать сервер, к которому хотите подключиться).
Прежде чем phpMyAdmin сможет использовать SSL для связи с удаленным сервером MySQL, нам нужно немного изменить его источники - откройте mysqli.dbi.lib.php (на Debian и Ubuntu это /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.php, если вы установили phpMyAdmin через apt):
vi /usr/share/phpmyadmin/libraries/dbi/mysqli.dbi.lib.phpНайдите следующий раздел…
| | [...] /* Опционально включить SSL */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |
… и измените его следующим образом:
| | [...] /* Опционально включить SSL */ if ($GLOBALS['cfg']['Server']['ssl'] && defined('MYSQLI_CLIENT_SSL')) { mysqli_ssl_set($link, $GLOBALS['cfg']['Server']['key'], $GLOBALS['cfg']['Server']['cert'], $GLOBALS['cfg']['Server']['ca'], $GLOBALS['cfg']['Server']['capath'], $GLOBALS['cfg']['Server']['cipher']); $client_flags |= MYSQLI_CLIENT_SSL; } [...] | |
Далее откройте config.inc.php - если вы на Debian/Ubuntu и установили phpMyAdmin через apt, это /etc/phpmyadmin/config.inc.php:
vi /etc/phpmyadmin/config.inc.php Найдите следующий раздел:
| | [...] /* Настройте в соответствии с dbconfig-common, если включено */ if (!empty($dbname)) { /* Тип аутентификации */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Параметры сервера */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Выберите mysqli, если ваш сервер его поддерживает */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Опционально: Пользователь для расширенных функций */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Опционально: Расширенные функции phpMyAdmin */ $cfg['Servers'][$i]['pmadb'] = $dbname; $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]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Раскомментируйте следующее, чтобы разрешить вход в аккаунты без пароля, * после того как вы учтете связанные с этим риски безопасности. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Перейдите к следующему серверу для остальной конфигурации */ $i++; } [...] | |
Добавьте следующий раздел ниже для localhost (= local.example.com):
| | [...] /* localhost.example.com */ /* Тип аутентификации */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Параметры сервера */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Выберите mysqli, если ваш сервер его поддерживает */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |
(В строке $cfg[‘Servers’][$i][‘hide_db’] вы можете указать все базы данных, которые не хотите отображать в phpMyAdmin - такие как information_schema, performance_schema и test.)
А для remote.example.com добавьте следующий раздел:
| | [...] /* remote.example.com */ /* Тип аутентификации */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Параметры сервера */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Выберите mysqli, если ваш сервер его поддерживает */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; [...] | |
Убедитесь, что вы используете mysqli в $cfg[‘Servers’][$i][‘extension’], установите $cfg[‘Servers’][$i][‘ssl’] в true и укажите файлы SSL, как показано. Мой полный раздел серверов выглядит следующим образом:
| | [...] /* Настройте в соответствии с dbconfig-common, если включено */ if (!empty($dbname)) { /* Тип аутентификации */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Параметры сервера */ if (empty($dbserver)) $dbserver = 'localhost'; $cfg['Servers'][$i]['host'] = $dbserver; if (!empty($dbport) || $dbserver != 'localhost') { $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['port'] = $dbport; } //$cfg['Servers'][$i]['compress'] = false; /* Выберите mysqli, если ваш сервер его поддерживает */ $cfg['Servers'][$i]['extension'] = 'mysqli'; /* Опционально: Пользователь для расширенных функций */ $cfg['Servers'][$i]['controluser'] = $dbuser; $cfg['Servers'][$i]['controlpass'] = $dbpass; /* Опционально: Расширенные функции phpMyAdmin */ $cfg['Servers'][$i]['pmadb'] = $dbname; $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]['designer_coords'] = 'pma_designer_coords'; $cfg['Servers'][$i]['tracking'] = 'pma_tracking'; $cfg['Servers'][$i]['userconfig'] = 'pma_userconfig'; /* Раскомментируйте следующее, чтобы разрешить вход в аккаунты без пароля, * после того как вы учтете связанные с этим риски безопасности. */ // $cfg['Servers'][$i]['AllowNoPassword'] = TRUE; /* Перейдите к следующему серверу для остальной конфигурации */ $i++; } /* localhost.example.com */ /* Тип аутентификации */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Параметры сервера */ $cfg['Servers'][$i]['host'] = 'localhost'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; /* Выберите mysqli, если ваш сервер его поддерживает */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* remote.example.com */ /* Тип аутентификации */ $cfg['Servers'][$i]['auth_type'] = 'cookie'; /* Параметры сервера */ $cfg['Servers'][$i]['host'] = 'remote.example.com'; $cfg['Servers'][$i]['connect_type'] = 'tcp'; $cfg['Servers'][$i]['compress'] = false; $cfg['Servers'][$i]['ssl'] = true; $cfg['Servers'][$i]['key'] = '/etc/mysql/newcerts/client-key.pem'; $cfg['Servers'][$i]['cert'] = '/etc/mysql/newcerts/client-cert.pem'; $cfg['Servers'][$i]['ca'] = '/etc/mysql/newcerts/ca-cert.pem'; $cfg['Servers'][$i]['capath'] = NULL; $cfg['Servers'][$i]['cipher'] = NULL; /* Выберите mysqli, если ваш сервер его поддерживает */ $cfg['Servers'][$i]['extension'] = 'mysqli'; $cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|test)'; $i++; /* Конец конфигурации серверов */ [...] | |
Вот и все - на экране входа phpMyAdmin теперь должно быть выпадающее меню, из которого вы можете выбрать сервер MySQL, к которому хотите подключиться (localhost или remote.example.com), и если вы выберете удаленный сервер MySQL (например, remote.example.com), phpMyAdmin подключится к нему через SSL-соединение.
4 Ссылки
phpMyAdmin: http://www.phpmyadmin.net/
MySQL: http://www.mysql.com/
Об авторе
Фалко Тимме является владельцем Timme Hosting (ультрабыстрая веб-хостинг на nginx). Он является ведущим куратором HowtoForge (с 2005 года) и одним из основных разработчиков ISPConfig (с 2000 года). Он также внес вклад в книгу O’Reilly “Администрирование систем Linux”.
Get new posts in your inbox
No spam. Unsubscribe anytime.