Como configurar o phpMyAdmin para acessar vários servidores?


13

Qual é a maneira do Ubuntu de configurar o phpMyAdmin para que eu possa usá-lo para administrar vários servidores MySQL? Os parâmetros do banco de dados estão definidos /etc/dbconfig-common/phpmyadmin.conf, mas há apenas espaço para os parâmetros de conexão para um único servidor. Eu poderia invadir /etc/phpmyadmin/config-db.phpe /etc/phpmyadmin/config.inc.php, mas suponho que deve haver uma maneira mais elegante.


Você já encontrou uma solução para fazer isso? Você invadiu um dos arquivos que você mencionou ou não?
Nanne

Este tutorial explica como você pode gerenciar vários servidores MySQL a partir de uma instalação do phpMyAdmin. Por razões de segurança, a comunicação entre phpMyAdmin e qualquer servidor MySQL remoto está usando criptografia SSL

Respostas:


8

Pergunta bastante antiga, mas ainda relevante nas pesquisas.

O phpMyAdmin usa PHP simples para arquivos de configuração e a $cfg['Servers']matriz para obter os servidores configurados.

Portanto, a maneira correta é adicionar um novo arquivo de configuração /etc/phpmyadmin/conf.dpara cada servidor que você deseja adicionar. É necessário apenas finalizar o nome dos arquivos .phppara incluí-los, mas é uma boa idéia usar your_new_server.inc.phppara obter consistência.

O conteúdo mínimo para um determinado arquivo de configuração seria:

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

Como indicado em outra resposta, você pode verificar o arquivo /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php para obter mais parâmetros.

Importante: Você deve aumentar o índice (2) da matriz para cada novo arquivo e evitar o uso de 1 se desejar continuar se conectando ao host local.

Se o (s) cara (s) que o (s) pacote (s) phpMyAdmin pensou nisso, ele poderia ter adicionado a $ivariável de incremento no foreach que inclui os arquivos do conf.ddiretório, para que você possa usá-lo apenas como índice e não se preocupar em precisar aumentá-lo manualmente, mas infelizmente não é o caso. Você pode fazer isso sozinho.


[2019]: As versões mais recentes do PHP permitem essa sintaxe alternativa mais sucinta:

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

Tentei colocar o conteúdo mínimo listado em /etc/phpmyadmin/conf.d/slaveA.conf.php e simplesmente vi o conteúdo na parte superior da página do PHPMyAdmin. Quando coloquei o mesmo conteúdo na parte inferior do config.inc.php, ele funcionou. Algo sobre essa inclusão parece estar atrapalhando. Caso contrário, essa parece ser a maneira esperada de criar configurações personalizadas que não serão eliminadas nas atualizações.
Flickerfly

1
@ flickerfly, resposta tardia, mas o código nos arquivos de configuração precisa começar <?php, como qualquer outro script PHP.
Marc

4

Eu acho que essa é a maneira mais precisa de fazer isso:

Primeiro configure a senha:

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

Desative a segurança:

sudo pma-configure

Em seguida, vá para http: // nome_do_servidor / phpmyadmin / setup (aqui os navegadores solicitam autenticação, o usuário é administrador e a senha é o que você escreve no primeiro comando); com esse assistente, você configura seus servidores, quando terminar, coloque o segurança novamente:

sudo pma-secure

O arquivo de configuração gerado por esse método é armazenado em /var/lib/phpmyadmin/config.inc.php.
Michael Lawton

Esse arquivo de configuração gerado por esse método é incluído no arquivo de configuração principal em /etc/phpmyadmin/config.inc.php. O script de instalação do phpMyAdmin é defeituoso no Ubuntu e não carrega a configuração existente (forçando você a começar do zero toda vez que a configura). Além disso, a configuração gerada inclui coisas como o segredo do blowfish, que é substituído pelo arquivo de configuração principal. Você verá que o primeiro servidor (1) é substituído pelo arquivo de configuração principal, que utiliza os valores do servidor em config-db.php.
Michael Lawton

2

Eu assumi o seguinte:

  • /etc/phpmyadmin/ seria o local mais lógico para adicionar a configuração
  • /etc/phpmyadmin/config-db.phpé o local para a configuração padrão (local?). Isto é, porque é um padrão, apenas um db
  • /etc/phpmyadmin/config.inc.phplê o banco de dados padrão para que ele tenha um. Pelo menos este é usado, então você tem um banco de dados. Se algo mudar na sua configuração, o config-db.phpé alterado, para que as alterações 'locais' no seu arquivo não sejam modificadas

Portanto, minha conclusão foi que adicionar um servidor extra abaixo desta 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

Parece o melhor lugar.


1

De acordo com a documentação do phpMyAdmin , você pode definir vários servidores na $cfg['Servers']matriz definida no config.inc.phparquivo.


2
Em uma instalação genérica do phpMyAdmin, sim. Mas o Ubuntu tem seus próprios arquivos de configuração para gerar essa parte do arquivo config.inc.php, e eu quero saber a maneira de configurá-lo, sem ter que substituir a configuração do Ubuntu.
Mike Scott

Entendo. Os comentários no arquivo dizem You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. Eu suponho que você tentou isso? (não o fará no sistema de produção agora) Fora isso ... os arquivos alterados manualmente devem ser solicitados na atualização antes de serem substituídos.
Carsten Thiel

2
Sim, posso regenerar o arquivo config-db.php, mas o arquivo de configuração a partir do qual ele origina os parâmetros de conexão do banco de dados (/etc/dbconfig-common/phpmyadmin.conf) possui apenas espaço para configurar um servidor de banco de dados. Quero saber como configurar mais de um servidor de banco de dados.
Mike Scott

+ Mike Scott, não consegui que o $ cfg ['Servers'] funcionasse em um arquivo conf.d /, mas quando o coloquei em config.inc.php, funcionou bem. Estou pensando que há algum bug que a instrução include mexe com ele.
Flickerfly

1

O arquivo de configuração principal está armazenado em /etc/phpmyadmin/config.inc.php. Este arquivo inclui o

  • Segredo Blowfish de /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Configuração gerada a partir do script de instalação do phpMyAdmin (método de diegueus9) /var/lib/phpmyadmin/config.inc.php
  • Valores de banco de dados dos /etc/phpmyadmin/config-db.phpquais são gerados /etc/dbconfig-common/phpmyadmin.confpor /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.confpode ser modificado usandodpkg-reconfigure -plow phpmyadmin
  • Arquivos de configuração extras de /etc/phpmyadmin/conf.d/*.php

Alguns exemplos de snippets de configuração estão /usr/share/doc/phpmyadmin/examplesincluídos config.manyhosts.inc.php. Este arquivo pode ser adicionado a /etc/phpmyadmin/conf.d. Ele funciona redefinindo a ivariável de volta para 1 antes de criar qualquer host, para que ele substitua o host definido /etc/phpmyadmin/config.inc.php.

Se você deseja fazer uma configuração mais avançada, provavelmente desejará alterar o /etc/phpmyadmin/config.inc.phparquivo e possivelmente adicionar outras extensões de configuração usando /etc/phpmyadmin/conf.d.

Para adicionar suporte a configurações adicionais aos arquivos de configuração mais antigos, você pode criar o diretório /etc/phpmyadmin/conf.de adicionar o código PHP abaixo na parte inferior de /etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.