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

13

Как в Ubuntu настроить phpMyAdmin, чтобы я мог использовать его для администрирования нескольких серверов MySQL? Параметры базы данных заданы /etc/dbconfig-common/phpmyadmin.conf, но там есть только место для параметров подключения для одного сервера. Я мог бы взломать это /etc/phpmyadmin/config-db.phpи /etc/phpmyadmin/config.inc.php, но я предполагаю, что должен быть более элегантный способ.

Майк Скотт
источник
Вы когда-нибудь находили решение для этого? Вы взломали один из упомянутых вами файлов или нет?
Нанн
В этом руководстве объясняется, как вы можете управлять несколькими серверами MySQL из одной установки phpMyAdmin. По соображениям безопасности связь между phpMyAdmin и любым удаленным сервером MySQL использует шифрование SSL

Ответы:

8

Довольно старый вопрос, но все же актуален по поискам.

phpMyAdmin использует простой PHP для конфигурационных файлов и $cfg['Servers']массив для получения настроенных серверов.

Поэтому правильный способ - добавить новый файл конфигурации /etc/phpmyadmin/conf.dдля каждого сервера, который вы хотите добавить. Требуется только завершить имя файла, .phpчтобы включить их, но your_new_server.inc.phpдля согласованности рекомендуется использовать его .

Минимальное содержание для данного файла конфигурации будет:

<?php // let the interpreter know this is code
$cfg['Servers'][2]['host']     = 'THE_HOST';
$cfg['Servers'][2]['user']     = 'THE_USER';
$cfg['Servers'][2]['password'] = 'THE_PASSWORD';

Как указано в другом ответе, вы можете проверить файл /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php для получения дополнительных параметров.

Важное замечание: Вы должны увеличивать индекс (2) массива для каждого нового файла и избегать использования 1, если хотите продолжать соединение с localhost.

Если бы парни этого пакета (ов) phpMyAdmin подумали об этом, они могли бы добавить инкрементную $iпеременную в foreach, которая включает файлы из conf.dкаталога, так что вы можете просто использовать ее в качестве индекса и не беспокоиться о необходимости увеличить его вручную, но, к сожалению, это не так. Вы можете сделать это самостоятельно, хотя.


[2019]: более новые версии PHP позволяют использовать более лаконичный альтернативный синтаксис:

<?php $cfg['Servers'][] = ['host'=>'my_host', 'user'=>'my_user', 'password'=>'my_pass'];
Марк
источник
Я попытался поместить минимальное содержимое, указанное в /etc/phpmyadmin/conf.d/slaveA.conf.php, и просто увидел содержимое в верхней части страницы PHPMyAdmin. Когда я поместил то же самое содержимое в конец config.inc.php, это сработало. Кажется, что-то об этом включает в себя все. В противном случае это выглядит как ожидаемый способ создания пользовательской конфигурации, которая не будет уничтожена в обновлениях.
flickerfly
1
@flickerfly, поздний ответ, но код в файлах конфигурации должен начинаться с <?php, как и любой другой скрипт PHP.
Марк
4

Я думаю, что это самый точный способ сделать это:

Сначала настройте пароль:

sudo htpasswd -c /etc/phpmyadmin/htpasswd.setup admin

Затем отключите безопасность:

sudo pma-configure

Затем перейдите по адресу http: // yourserver / phpmyadmin / setup (здесь браузеры запрашивают auth, пользователь - admin, а пароль - то, что вы пишете в первой команде), с помощью этого мастера вы настраиваете свои серверы, как только закончите, поместите безопасность снова:

sudo pma-secure
diegueus9
источник
Файл конфигурации, сгенерированный этим методом, хранится в /var/lib/phpmyadmin/config.inc.php.
Майкл Лоутон
Этот файл конфигурации, сгенерированный этим методом, затем включается в основной файл конфигурации в /etc/phpmyadmin/config.inc.php. Сценарий установки phpMyAdmin содержит ошибки в Ubuntu и не загружает существующую конфигурацию (заставляя вас начинать с нуля при каждой настройке). Также генерируемая конфигурация включает в себя такие вещи, как секрет blowfish, который затем перезаписывается основным файлом конфигурации. Вы обнаружите, что первый сервер (1) перезаписывается основным файлом конфигурации, который использует значения сервера из config-db.php.
Майкл Лоутон
2

Я предположил следующее:

  • /etc/phpmyadmin/ будет наиболее логичным местом для добавления конфига
  • /etc/phpmyadmin/config-db.phpрасположение для конфигурации по умолчанию (локально?) Это потому, что это по умолчанию, только один дБ
  • /etc/phpmyadmin/config.inc.phpчитает базу данных по умолчанию, чтобы она была. По крайней мере, этот используется, поэтому у вас есть база данных. Если что-то меняется в вашей конфигурации, то config-db.phpизменяется, поэтому «локальные» изменения в вашем файле не изменяются

Поэтому я пришел к выводу, что добавление дополнительного сервера ниже этой части:

/* Configure according to dbconfig-common if enabled */
if (!empty($dbname)) {
    //reading from config-db.php
}

//$i++ was allready done in if above
//Adding extra servers
 $cfg['Servers'][$i]['host'] = 'serverhost.host.tld';
 $cfg['Servers'][$i]['extension'] = 'mysqli';
//...etc

Это выглядит как лучшее место.

Nanne
источник
1

Согласно документации phpMyAdmin вы можете определить несколько серверов в $cfg['Servers']массиве, определенном в config.inc.phpфайле.

Карстен Тиль
источник
2
В обычной установке phpMyAdmin, да. Но в Ubuntu есть свои собственные файлы конфигурации для генерации этой части файла config.inc.php, и я хочу знать способ его настройки в Ubuntu без необходимости переопределять конфигурацию Ubuntu.
Майк Скотт
Понимаю. Комментарии в файле говорят You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. Я полагаю, вы пробовали это? (не будет делать это в производственной системе сейчас) Кроме этого ... измененные вручную файлы должны запрашиваться при обновлении перед перезаписью.
Карстен Тиль
2
Да, я могу сгенерировать файл config-db.php, но в файле конфигурации, из которого он получает параметры подключения к базе данных (/etc/dbconfig-common/phpmyadmin.conf), есть место для настройки только одного сервера базы данных. Я хочу знать, как настроить более одного сервера баз данных.
Майк Скотт
+ Майк Скотт, я не мог заставить $ cfg ['Servers'] работать в файле conf.d /, но когда я поместил его в config.inc.php, он работал нормально. Я думаю, что есть какая-то ошибка, которая связана с оператором include.
flickerfly
1

Основной файл конфигурации хранится в /etc/phpmyadmin/config.inc.php. Этот файл включает в себя

  • Blowfish секрет от /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Сгенерированный конфиг из скрипта установки phpMyAdmin (метод diegueus9) /var/lib/phpmyadmin/config.inc.php
  • Значения DB из /etc/phpmyadmin/config-db.phpкоторого генерируются из /etc/dbconfig-common/phpmyadmin.confпути /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.confможет быть изменено с помощьюdpkg-reconfigure -plow phpmyadmin
  • Дополнительные файлы конфигурации из /etc/phpmyadmin/conf.d/*.php

Некоторые примеры конфигурации приведены в /usr/share/doc/phpmyadmin/examplesтом числе config.manyhosts.inc.php. Этот файл можно добавить в /etc/phpmyadmin/conf.d. Он работает, сбрасывая iпеременную обратно в 1, прежде чем создавать какие-либо хосты, чтобы переопределить хост, установленный в /etc/phpmyadmin/config.inc.php.

Если вы хотите выполнить более сложную настройку, вы, вероятно, захотите изменить /etc/phpmyadmin/config.inc.phpфайл и, возможно, добавить другие расширения конфигурации, используя /etc/phpmyadmin/conf.d.

Чтобы добавить поддержку дополнительных конфигураций в старые файлы конфигурации, вы можете создать каталог, /etc/phpmyadmin/conf.dа затем добавить приведенный ниже код PHP внизу /etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
Майкл Лоутон
источник