Come configurare phpMyAdmin per accedere a più server?


13

Qual è il modo Ubuntu per configurare phpMyAdmin in modo da poterlo utilizzare per amministrare più server MySQL? I parametri del database sono impostati /etc/dbconfig-common/phpmyadmin.conf, ma c'è solo spazio per i parametri di connessione per un singolo server. Potrei hackerarlo /etc/phpmyadmin/config-db.phpe /etc/phpmyadmin/config.inc.php, ma presumo che ci debba essere un modo più elegante.


Hai mai trovato un sollution per farlo? Hai hackerato uno dei file che hai citato o no?
Nanne,

Questo tutorial spiega come gestire più server MySQL da un'unica installazione di phpMyAdmin. Per motivi di sicurezza, la comunicazione tra phpMyAdmin e qualsiasi server MySQL remoto utilizza la crittografia SSL

Risposte:


8

Domanda abbastanza vecchia, ma ancora rilevante nelle ricerche.

phpMyAdmin utilizza PHP semplice per i file di configurazione e l' $cfg['Servers']array per ottenere i server configurati.

Quindi il modo corretto è quello di aggiungere un nuovo file di configurazione /etc/phpmyadmin/conf.dper ogni server che si desidera aggiungere. È necessario solo terminare il nome del file .phpper includerli, ma è una buona idea usare your_new_server.inc.phpper coerenza.

Il contenuto minimo per un determinato file di configurazione sarebbe:

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

Come indicato in un'altra risposta, è possibile controllare il file /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php per ulteriori parametri.

Importante: è necessario aumentare l'indice (2) dell'array per ogni nuovo file ed evitare di utilizzare 1 se si desidera continuare a connettersi a localhost.

Se i ragazzi che quel pacchetto phpMyAdmin ci avesse pensato, avrebbero potuto aggiungere la $ivariabile di incremento nel foreach che include i file dalla conf.ddirectory, quindi potresti semplicemente usarlo come indice e non preoccuparti di dover aumentalo manualmente, ma purtroppo non è il caso. Puoi farlo da solo però.


[2019]: le nuove versioni di PHP consentono questa sintassi alternativa più concisa:

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

Ho provato a mettere il contenuto minimo elencato in /etc/phpmyadmin/conf.d/slaveA.conf.php e ho semplicemente visto il contenuto nella parte superiore della pagina PHPMyAdmin. Quando ho catturato gli stessi contenuti nella parte inferiore di config.inc.php ha funzionato. Qualcosa su questo include sembra rovinare tutto. Altrimenti, questo sembra essere il modo previsto per creare una configurazione personalizzata che non verrà uccisa negli aggiornamenti.
flickerfly

1
@flickerfly, risposta in ritardo ma il codice nei file di configurazione deve iniziare con <?php, come qualsiasi altro script PHP.
Marc,

4

Penso che questo sia il modo più accurato per farlo:

Innanzitutto imposta la password:

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

Quindi disabilitare la sicurezza:

sudo pma-configure

Quindi vai a http: // yourserver / phpmyadmin / setup (qui i browser chiedono auth, l'utente è admin e la password è ciò che scrivi al primo comando), con quella procedura guidata configura i tuoi server, una volta fatto, inserisci il di nuovo sicurezza:

sudo pma-secure

Il file di configurazione generato da questo metodo è archiviato in /var/lib/phpmyadmin/config.inc.php.
Michael Lawton,

Questo file di configurazione generato da questo metodo viene quindi incluso nel file di configurazione principale in /etc/phpmyadmin/config.inc.php. Lo script di installazione di phpMyAdmin è difettoso su Ubuntu e non carica la configurazione esistente (costringendoti a ricominciare da capo ogni volta che lo configuri). Anche la configurazione che genera include cose come il segreto di Blowfish che viene poi sovrascritto dal file di configurazione principale. Scoprirai che il primo server (1) viene sovrascritto dal file di configurazione principale, che utilizza i valori del server da config-db.php.
Michael Lawton,

2

Ho assunto quanto segue:

  • /etc/phpmyadmin/ sarebbe il posto più logico per aggiungere la configurazione
  • /etc/phpmyadmin/config-db.phpè la posizione per la configurazione predefinita (locale?). Questo perché, come impostazione predefinita, è solo un db
  • /etc/phpmyadmin/config.inc.phplegge il database predefinito quindi ne ha uno. Almeno questo è usato, quindi hai un database. Se qualcosa cambia nella tua configurazione, config-db.phpviene modificato, quindi le modifiche "locali" al tuo file non vengono modificate

Pertanto la mia conclusione è stata che l'aggiunta di un server aggiuntivo sotto questa parte:

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

Questo sembra il posto migliore.


1

Secondo la documentazione di phpMyAdmin è possibile definire più server $cfg['Servers']nell'array definito nel config.inc.phpfile.


2
In un'installazione phpMyAdmin generica, sì. Ma Ubuntu ha i propri file di configurazione per generare quella parte del file config.inc.php e voglio conoscere il modo di Ubuntu per configurarlo, senza dover sovrascrivere la configurazione di Ubuntu.
Mike Scott,

Vedo. Dicono i commenti nel file You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. Immagino tu l'abbia provato? (non lo farà ora sul sistema di produzione) A parte quello ... i file modificati manualmente dovrebbero essere richiesti all'aggiornamento prima di essere sovrascritti.
Carsten Thiel,

2
Sì, posso rigenerare il file config-db.php, ma il file di configurazione da cui proviene i parametri di connessione al database (/etc/dbconfig-common/phpmyadmin.conf) ha spazio solo per configurare un server di database. Voglio sapere come configurare più di un server di database.
Mike Scott,

+ Mike Scott, non sono riuscito a far funzionare $ cfg ['Server'] in un file conf.d /, ma quando l'ho messo in config.inc.php ha funzionato bene. Sto pensando che ci sia qualche bug che la dichiarazione include non riesce.
flickerfly

1

Il file di configurazione principale è archiviato in /etc/phpmyadmin/config.inc.php. Questo file include il file

  • Segreto Blowfish da /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Configurazione generata dallo script di installazione di phpMyAdmin (metodo di diegueus9) /var/lib/phpmyadmin/config.inc.php
  • Valori DB da /etc/phpmyadmin/config-db.phpcui sono generati /etc/dbconfig-common/phpmyadmin.confda /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.confpuò essere modificato usandodpkg-reconfigure -plow phpmyadmin
  • File di configurazione extra da /etc/phpmyadmin/conf.d/*.php

Alcuni esempi di frammenti di configurazione sono /usr/share/doc/phpmyadmin/examplesinclusi config.manyhosts.inc.php. Questo file può essere aggiunto a /etc/phpmyadmin/conf.d. Funziona ripristinando la ivariabile su 1 prima di creare qualsiasi host in modo da sovrascrivere l'host impostato /etc/phpmyadmin/config.inc.php.

Se vuoi fare una configurazione più avanzata, probabilmente vorrai cambiare il /etc/phpmyadmin/config.inc.phpfile ed eventualmente aggiungere altre estensioni di configurazione usando /etc/phpmyadmin/conf.d.

Per aggiungere il supporto per configurazioni aggiuntive ai file di configurazione precedenti, è possibile creare la directory /etc/phpmyadmin/conf.d e quindi aggiungere il codice PHP sottostante in fondo a /etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.