¿Cómo configurar phpMyAdmin para acceder a múltiples servidores?


13

¿Cuál es la forma de Ubuntu de configurar phpMyAdmin para que pueda usarlo para administrar múltiples servidores MySQL? Los parámetros de la base de datos están configurados /etc/dbconfig-common/phpmyadmin.conf, pero solo hay espacio allí para los parámetros de conexión para un solo servidor. Podría hackearlo /etc/phpmyadmin/config-db.phpy /etc/phpmyadmin/config.inc.php, pero supongo que tiene que haber una forma más elegante.


¿Alguna vez has encontrado una solución para hacer esto? ¿Has pirateado uno de los archivos que has mencionado o no?
Nanne

Este tutorial explica cómo puede administrar múltiples servidores MySQL desde una instalación de phpMyAdmin. Por razones de seguridad, la comunicación entre phpMyAdmin y cualquier servidor MySQL remoto está utilizando encriptación SSL

Respuestas:


8

Pregunta bastante antigua, pero aún relevante en las búsquedas.

phpMyAdmin usa PHP simple para los archivos de configuración y la $cfg['Servers']matriz para obtener los servidores configurados.

Entonces, la forma correcta es agregar un nuevo archivo de configuración /etc/phpmyadmin/conf.dpara cada servidor que desee agregar. Solo es necesario finalizar el nombre de los archivos .phppara incluirlos, pero es una buena idea usarlo your_new_server.inc.phppara mantener la coherencia.

El contenido mínimo para un archivo de configuración dado sería:

<?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 se indicó en otra respuesta, puede consultar el archivo /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php para obtener más parámetros.

Importante: debe aumentar el índice (2) de la matriz para cada archivo nuevo y evitar usar 1 si desea seguir conectándose a localhost.

Si el / los tipo (s) de ese (s) paquete (s) phpMyAdmin lo hubieran pensado, podrían haber agregado la $ivariable de incremento en el foreach que incluye los archivos del conf.ddirectorio, por lo que podría usarlo como índice y no preocuparse por tener que aumentarlo manualmente, pero lamentablemente no es el caso. Sin embargo, puedes hacerlo tú mismo.


[2019]: las versiones PHP más nuevas permiten esta sintaxis alternativa más sucinta:

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

Intenté poner el contenido mínimo listado en /etc/phpmyadmin/conf.d/slaveA.conf.php y simplemente vi el contenido en la parte superior de la página PHPMyAdmin. Cuando capturé ese mismo contenido en la parte inferior de config.inc.php funcionó. Algo sobre eso incluye estarlo estropeando. De lo contrario, esta parece ser la forma esperada de crear una configuración personalizada que no se elimine en las actualizaciones.
flickerfly

1
@flickerfly, respuesta tardía pero el código en los archivos de configuración tiene que comenzar <?php, como cualquier otro script PHP.
Marc

4

Creo que esta es la forma más precisa de hacerlo:

Primero configure la contraseña:

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

Luego deshabilite la seguridad:

sudo pma-configure

Luego vaya a http: // yourserver / phpmyadmin / setup (aquí los navegadores solicitan autenticación, el usuario es administrador y la contraseña es lo que escribe en el primer comando), con ese asistente configura sus servidores, una vez hecho, coloque el seguridad de nuevo:

sudo pma-secure

El archivo de configuración generado por este método se almacena en /var/lib/phpmyadmin/config.inc.php.
Michael Lawton

Este archivo de configuración generado por este método se incluye en el archivo de configuración principal en /etc/phpmyadmin/config.inc.php. El script de configuración phpMyAdmin tiene errores en Ubuntu y no carga la configuración existente (lo que te obliga a comenzar desde cero cada vez que lo configuras). Además, la configuración que genera incluye cosas como el secreto de blowfish que luego se sobrescribe con el archivo de configuración principal. Encontrará que el primer servidor (1) está sobrescrito por el archivo de configuración principal, que utiliza los valores del servidor de config-db.php.
Michael Lawton

2

He asumido lo siguiente:

  • /etc/phpmyadmin/ sería el lugar más lógico para agregar la configuración
  • /etc/phpmyadmin/config-db.phpes la ubicación de la configuración predeterminada (local?). Esto es, porque es un valor predeterminado, solo una base de datos
  • /etc/phpmyadmin/config.inc.phplee la base de datos predeterminada para que tenga una. Al menos se utiliza este, por lo que tiene una base de datos. Si algo cambia en su configuración, config-db.phpse cambia, por lo que los cambios 'locales' en su archivo no se modifican

Por lo tanto, mi conclusión fue que agregar un servidor adicional debajo de esta 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

Este parece el mejor lugar.


1

De acuerdo con la documentación de phpMyAdmin , puede definir varios servidores en la $cfg['Servers']matriz definida en el config.inc.phparchivo.


2
En una instalación genérica de phpMyAdmin, sí. Pero Ubuntu tiene sus propios archivos de configuración para generar esa parte del archivo config.inc.php, y quiero saber la forma en que Ubuntu lo configura, sin tener que anular la configuración de Ubuntu.
Mike Scott el

Veo. Los comentarios en el archivo dicen You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. ¿Supongo que lo intentaste? (no lo hará en el sistema de producción ahora) Aparte de eso ... los archivos modificados manualmente deberían ser solicitados en la actualización antes de sobrescribirse.
Carsten Thiel

2
Sí, puedo volver a generar el archivo config-db.php, pero el archivo de configuración del que obtiene los parámetros de conexión de la base de datos (/etc/dbconfig-common/phpmyadmin.conf) solo tiene espacio para configurar un servidor de base de datos. Quiero saber cómo configurar más de un servidor de base de datos.
Mike Scott el

+ Mike Scott, no pude hacer que $ cfg ['Servidores'] funcionara en un archivo conf.d /, pero cuando lo puse en config.inc.php funcionó bien. Estoy pensando que hay algún error que la declaración de inclusión interfiere con él.
flickerfly

1

El archivo de configuración principal se almacena en /etc/phpmyadmin/config.inc.php. Este archivo incluye el

  • Blowfish secreto de /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Configuración generada a partir del script de configuración phpMyAdmin (método de diegueus9) /var/lib/phpmyadmin/config.inc.php
  • Valores de base de datos a partir de los /etc/phpmyadmin/config-db.phpcuales se generan /etc/dbconfig-common/phpmyadmin.confpor /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.confse puede modificar usandodpkg-reconfigure -plow phpmyadmin
  • Archivos de configuración extra de /etc/phpmyadmin/conf.d/*.php

Algunos fragmentos de configuración de ejemplo están /usr/share/doc/phpmyadmin/examplesincluidos config.manyhosts.inc.php. Este archivo se puede agregar a /etc/phpmyadmin/conf.d. Funciona restableciendo la ivariable a 1 antes de crear cualquier host para que anule el host configurado /etc/phpmyadmin/config.inc.php.

Si desea hacer una configuración más avanzada, probablemente desee cambiar el /etc/phpmyadmin/config.inc.phparchivo y posiblemente agregar otras extensiones de configuración usando /etc/phpmyadmin/conf.d.

Para agregar soporte para configuraciones adicionales a archivos de configuración anteriores, puede crear el directorio /etc/phpmyadmin/conf.dy luego agregar el siguiente código PHP al final de /etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.