Як налаштувати phpMyAdmin для доступу до декількох серверів?


14

Який спосіб 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, він працював. Щось із цього приводу, здається, псує це. В іншому випадку це виглядає як очікуваний спосіб створити власну конфігурацію, яка не загине в оновленнях.
мерехтіння

1
@flickerfly, пізня відповідь, але код у конфігураційних файлах повинен починатися <?php, як і будь-який інший скрипт PHP.
Марк

4

Я думаю, що це найбільш точний спосіб зробити це:

Спочатку встановіть пароль:

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

Потім вимкніть безпеку:

sudo pma-configure

Потім перейдіть до http: // yourserver / phpmyadmin / setup (тут браузери запитують auth, користувач - адміністратор, а пароль - це те, що ви пишете в першій команді). безпека знову:

sudo pma-secure

Конфігураційний файл, створений цим методом, зберігається в /var/lib/phpmyadmin/config.inc.php.
Майкл Лоутон

Цей файл конфігурації, створений цим методом, потім включається в основний файл конфігурації за адресою /etc/phpmyadmin/config.inc.php. Сценарій настройки phpMyAdmin є помилковим на Ubuntu і не завантажує існуючу конфігурацію (змушує вас починати з нуля кожен раз, коли ви налаштовуєте її). Крім того, створена ним конфігурація включає в себе такі речі, як секрет метелика, який потім перезаписується основним файлом конфігурації. Ви побачите, що перший сервер (1) перезаписаний основним конфігураційним файлом, який використовує серверні значення з config-db.php.
Майкл Лоутон

2

Я припустив наступне:

  • /etc/phpmyadmin/ було б найбільш логічним місцем для додавання конфігурації
  • /etc/phpmyadmin/config-db.php- це місце для типової (локальної?) конфігурації. Це тому, що це за замовчуванням, лише один db
  • /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

Це виглядає як найкраще місце.


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 ['Сервери'] працювати в conf.d / файлі, але коли я помістив його в config.inc.php, він працював нормально. Я думаю, що є якась помилка, яка включає в себе помилку заяви.
мерехтіння

1

Основний файл конфігурації зберігається в /etc/phpmyadmin/config.inc.php. Цей файл включає в себе

  • Секрет міхура з /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Створено конфігурацію із сценарію настройки phpMyAdmin (метод diegueus9) /var/lib/phpmyadmin/config.inc.php
  • Значення БД, з /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);
}
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.