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.