Jak skonfigurować phpMyAdmin, aby uzyskać dostęp do wielu serwerów?


14

Jaki jest sposób Ubuntu na skonfigurowanie phpMyAdmina, aby móc go używać do administrowania wieloma serwerami MySQL? Parametry bazy danych są ustawione /etc/dbconfig-common/phpmyadmin.conf, ale jest tam tylko miejsce na parametry połączenia dla pojedynczego serwera. Mogę go włamać /etc/phpmyadmin/config-db.phpi /etc/phpmyadmin/config.inc.php, ale zakładam, że musi być bardziej elegancki sposób.


Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? Czy włamałeś się do jednego z wspomnianych plików, czy nie?
Nanne

W tym samouczku wyjaśniono, jak można zarządzać wieloma serwerami MySQL z jednej instalacji phpMyAdmin. Ze względów bezpieczeństwa komunikacja między phpMyAdmin a dowolnym zdalnym serwerem MySQL korzysta z szyfrowania SSL

Odpowiedzi:


8

Dość stare pytanie, ale wciąż aktualne przy wyszukiwaniu.

phpMyAdmin używa zwykłego PHP do plików konfiguracyjnych i $cfg['Servers']tablicy, aby uzyskać skonfigurowane serwery.

Zatem właściwym sposobem jest dodanie nowego pliku konfiguracyjnego /etc/phpmyadmin/conf.ddla każdego serwera, który chcesz dodać. Konieczne jest tylko zakończenie nazwy pliku, .phpaby je uwzględnić, ale warto zachować your_new_server.inc.phpspójność.

Minimalna zawartość dla danego pliku konfiguracyjnego to:

<?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';

Jak podano w innej odpowiedzi, możesz sprawdzić plik /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php , aby uzyskać więcej parametrów.

Ważne: Musisz zwiększyć indeks (2) tablicy dla każdego nowego pliku i unikać używania 1, jeśli chcesz nadal łączyć się z hostem lokalnym.

Jeśli faceci z pakietu (phpMyAdmin) o tym pomyśleli, mogliby dodać $izmienną inkrementacyjną w foreach, która zawiera pliki z conf.dkatalogu, abyś mógł po prostu użyć jej jako indeksu i nie martwić się o to, że musisz zwiększ go ręcznie, ale niestety tak nie jest. Możesz to zrobić sam.


[2019]: Nowsze wersje PHP pozwalają na bardziej zwięzłą alternatywną składnię:

<?php $cfg['Servers'][] = ['host'=>'my_host', 'user'=>'my_user', 'password'=>'my_pass'];

Próbowałem umieścić minimalną zawartość wymienioną w /etc/phpmyadmin/conf.d/slaveA.conf.php i po prostu zobaczyłem zawartość na górze strony PHPMyAdmin. Kiedy umieściłem tę samą zawartość na dole config.inc.php, zadziałało. Wygląda na to, że coś w tym nie działa. W przeciwnym razie wygląda to na oczekiwany sposób utworzenia niestandardowej konfiguracji, która nie zostanie zabita w aktualizacjach.
flickerfly

1
@flickerfly, późna odpowiedź, ale kod w plikach konfiguracyjnych musi zaczynać się <?php, jak każdy inny skrypt PHP.
Marc

4

Myślę, że to najdokładniejszy sposób to zrobić:

Najpierw skonfiguruj hasło:

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

Następnie wyłącz zabezpieczenia:

sudo pma-configure

Następnie przejdź do http: // yourserver / phpmyadmin / setup (tutaj przeglądarki pytają o autoryzację, użytkownik jest administratorem, a hasło jest tym, co piszesz w pierwszej komendzie), za pomocą tego kreatora skonfigurujesz serwery, gdy to zrobisz, umieść bezpieczeństwo ponownie:

sudo pma-secure

Plik konfiguracyjny wygenerowany tą metodą jest przechowywany w /var/lib/phpmyadmin/config.inc.php.
Michael Lawton

Ten plik konfiguracyjny wygenerowany tą metodą jest następnie dołączany do głównego pliku konfiguracyjnego w /etc/phpmyadmin/config.inc.php. Skrypt instalacyjny phpMyAdmin jest wadliwy w systemie Ubuntu i nie ładuje istniejącej konfiguracji (zmuszając cię do rozpoczęcia od zera za każdym razem, gdy ją konfigurujesz). Również konfiguracja, którą generuje, obejmuje takie rzeczy, jak sekret blowfish, który jest następnie nadpisywany przez główny plik konfiguracyjny. Przekonasz się, że pierwszy serwer (1) jest nadpisany przez główny plik konfiguracyjny, który wykorzystuje wartości serwera z config-db.php.
Michael Lawton

2

Przyjąłem następujące założenia:

  • /etc/phpmyadmin/ byłoby najbardziej logicznym miejscem na dodanie konfiguracji
  • /etc/phpmyadmin/config-db.phpjest lokalizacją domyślnej (lokalnej?) konfiguracji. Jest tak, ponieważ jest to domyślnie tylko jeden db
  • /etc/phpmyadmin/config.inc.phpodczytuje domyślną bazę danych, więc ma ją. Przynajmniej ten jest używany, więc masz bazę danych. Jeśli coś zmieni się w twojej konfiguracji, config-db.phpzmieni się, więc zmiany „lokalne” w twoim pliku nie są modyfikowane

Dlatego doszedłem do wniosku, że dodanie dodatkowego serwera poniżej tej części:

/* 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

To wygląda na najlepsze miejsce.


1

Zgodnie z dokumentacją phpMyAdmin możesz zdefiniować wiele serwerów w $cfg['Servers']tablicy zdefiniowanej w config.inc.phppliku.


2
W ogólnej instalacji phpMyAdmin, tak. Ale Ubuntu ma własne pliki konfiguracyjne do generowania tej części pliku config.inc.php, i chcę poznać sposób Ubuntu, aby go skonfigurować, bez konieczności zastępowania konfiguracji Ubuntu.
Mike Scott

Widzę. Komentarze w pliku mówią You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. Zakładam, że próbowałeś tego? (nie zrobi tego teraz w systemie produkcyjnym) Poza tym ... ręcznie zmienione pliki powinny być monitowane o aktualizację, zanim zostaną zastąpione.
Carsten Thiel

2
Tak, mogę ponownie wygenerować plik config-db.php, ale plik konfiguracyjny, z którego pochodzi źródło parametrów połączenia z bazą danych (/etc/dbconfig-common/phpmyadmin.conf), ma tylko miejsce na skonfigurowanie jednego serwera bazy danych. Chcę wiedzieć, jak skonfigurować więcej niż jeden serwer bazy danych.
Mike Scott

+ Mike Scott, nie mogłem zmusić $ cfg ['Servers'] do pracy w pliku conf.d /, ale kiedy umieściłem go w config.inc.php, działało dobrze. Wydaje mi się, że jest jakiś błąd, który zawiera w nim instrukcja include.
flickerfly

1

Główny plik konfiguracyjny jest przechowywany w /etc/phpmyadmin/config.inc.php. Ten plik zawiera

  • Sekret Blowfish od /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Wygenerowano konfigurację ze skryptu instalacyjnego phpMyAdmin (metoda diegueus9) /var/lib/phpmyadmin/config.inc.php
  • Wartości DB, z /etc/phpmyadmin/config-db.phpktórych są generowane /etc/dbconfig-common/phpmyadmin.confprzez /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.confmożna zmodyfikować za pomocądpkg-reconfigure -plow phpmyadmin
  • Dodatkowe pliki konfiguracyjne z /etc/phpmyadmin/conf.d/*.php

Niektóre przykładowe fragmenty konfiguracji /usr/share/doc/phpmyadmin/examplesobejmują config.manyhosts.inc.php. Ten plik można dodać do /etc/phpmyadmin/conf.d. Działa poprzez zresetowanie izmiennej z powrotem do 1 przed utworzeniem dowolnego hosta, aby zastąpił ustawiony host /etc/phpmyadmin/config.inc.php.

Jeśli chcesz przeprowadzić bardziej zaawansowaną konfigurację, prawdopodobnie będziesz chciał zmienić /etc/phpmyadmin/config.inc.phpplik i ewentualnie dodać inne rozszerzenia konfiguracji za pomocą /etc/phpmyadmin/conf.d.

Aby dodać obsługę dodatkowych konfiguracji do starszych plików konfiguracyjnych, możesz utworzyć katalog, /etc/phpmyadmin/conf.da następnie dodać poniższy kod PHP na dole /etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.