Назад | Перейти на главную страницу

Как я могу поддерживать вход на несколько хостов в phpMyAdmin

Я пытаюсь настроить phpMyAdmin для администрирования нескольких серверов MySQL из одного экземпляра. Я изменил образец конфигурации, который был включен в /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php (на сервере работает Debian 8)

$i=0;
$hosts = array (
    ["addr" => "server1.example.com", "name" => "Server One"],
    ["addr" => "server2.example.com", "name" => "Server Two"],
    ["addr" => "server3.example.com", "name" => "Server Three"],
);

foreach ($hosts as $host) {
    $i++;
    $cfg['Servers'][$i]['verbose']  = $host["name"];
    $cfg['Servers'][$i]['host']     = $host["addr"];
    $cfg['Servers'][$i]['port']     = '';
    $cfg['Servers'][$i]['socket']   = '';
    $cfg['Servers'][$i]['connect_type']     = 'tcp';
    $cfg['Servers'][$i]['extension']        = 'mysqli';
    $cfg['Servers'][$i]['compress'] = FALSE;
    $cfg['Servers'][$i]['controluser']      = $dbuser;
    $cfg['Servers'][$i]['controlpass']      = $dbpass;
    $cfg['Servers'][$i]['controlhost']      = 'localhost';
    $cfg['Servers'][$i]['auth_type']        = 'cookie';
    $cfg['Servers'][$i]['user']     = '';
    $cfg['Servers'][$i]['password'] = '';
    $cfg['Servers'][$i]['only_db']  = '';
    $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]['designer_coords'] = 'pma__designer_coords';
    $cfg['Servers'][$i]['recent']  = 'pma__recent';
    $cfg['Servers'][$i]['table_uiprefs']  = 'pma__table_uiprefs';
    $cfg['Servers'][$i]['tracking']  = 'pma__tracking';
    $cfg['Servers'][$i]['userconfig']  = 'pma__userconfig';
    $cfg['Servers'][$i]['users']  = 'pma__users';
    $cfg['Servers'][$i]['usergroups']  = 'pma__usergroups';
    $cfg['Servers'][$i]['navigationhiding']  = 'pma__navigationhiding';
    $cfg['Servers'][$i]['savedsearches']  = 'pma__savedsearches';
}

Это работает как бы на странице входа и на левой панели после того, как я вошел в систему. У меня есть раскрывающийся список «Текущий сервер», где я могу выбрать свои серверы, однако, если из панели навигации я пытаюсь изменить серверы, меня перенаправляют на страницу входа в систему, и phpMyAdmin показывает ошибку «# 1045 Не удается войти на сервер MySQL». Обратите внимание, что имена пользователей и пароли одинаковы на каждом сервере. Если на новой странице входа я повторно ввожу имя пользователя / пароль, он нормально входит на этот сервер, однако переключение на предыдущий сервер вызывает ту же проблему.

Если я установлю $cfg['Servers'][$i]['auth_type'] = 'http' похоже, это работает, хотя я больше не получаю нормальную страницу входа. Я предполагаю, что это связано с тем, что браузер просто воспроизводит логин каждый раз, когда я меняю сервер.

Есть ли способ добиться этого, сохраняя $cfg['Servers'][$i]['auth_type'] = 'cookie'?

ОБНОВИТЬ После установки log_warnings = 2 на одном из серверов MySQL я вижу неудачные попытки входа в систему с тарабарщиной в имени пользователя, когда я пытаюсь переключить сервер.

Например, если phpMyAdmin работает на server1.example.com, и я вхожу на этот сервер MySQL, затем меняю на server2.example.com, в файле server2 /var/log/mysql/error.log я вижу

[Warning] Access denied for user '??<???!?'@'server1.example.com' (using password: YES)

Вместо myusername@'server1.example.com '