Comment configurer phpMyAdmin pour accéder à plusieurs serveurs?

13

Quelle est la méthode Ubuntu pour configurer phpMyAdmin afin que je puisse l'utiliser pour administrer plusieurs serveurs MySQL? Les paramètres de la base de données sont définis /etc/dbconfig-common/phpmyadmin.conf, mais il n'y a que de l'espace pour les paramètres de connexion pour un seul serveur. Je pourrais le pirater /etc/phpmyadmin/config-db.phpet /etc/phpmyadmin/config.inc.php, mais je suppose qu'il doit y avoir une manière plus élégante.

Mike Scott
la source
Avez-vous déjà trouvé une solution pour le faire? Avez-vous piraté l'un des fichiers que vous avez mentionnés ou non?
Nanne
Ce tutoriel explique comment gérer plusieurs serveurs MySQL à partir d'une seule installation phpMyAdmin. Pour des raisons de sécurité, la communication entre phpMyAdmin et tout serveur MySQL distant utilise le cryptage SSL

Réponses:

8

Question assez ancienne, mais toujours pertinente pour les recherches.

phpMyAdmin utilise du PHP simple pour les fichiers de configuration et le $cfg['Servers']tableau pour obtenir les serveurs configurés.

Donc, la bonne façon est d'ajouter un nouveau fichier de configuration /etc/phpmyadmin/conf.dpour chaque serveur que vous souhaitez ajouter. Il suffit de terminer le nom des fichiers .phppour les inclure, mais c'est une bonne idée à utiliser your_new_server.inc.phppour la cohérence.

Le contenu minimal pour un fichier de configuration donné serait:

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

Comme indiqué dans une autre réponse, vous pouvez vérifier le fichier /usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php pour plus de paramètres.

Important: vous devez augmenter l'index (2) du tableau pour chaque nouveau fichier et éviter d'utiliser 1 si vous souhaitez continuer à vous connecter à localhost.

Si le ou les gars de ce (s) paquet (s) phpMyAdmin y avaient pensé, ils auraient pu ajouter la $ivariable d' incrémentation dans le foreach qui inclut les fichiers du conf.drépertoire, vous pouvez donc simplement l'utiliser comme index et ne pas vous soucier de devoir l'augmenter manuellement, mais malheureusement ce n'est pas le cas. Vous pouvez le faire vous-même.


[2019]: les nouvelles versions de PHP permettent cette syntaxe alternative plus succincte:

<?php $cfg['Servers'][] = ['host'=>'my_host', 'user'=>'my_user', 'password'=>'my_pass'];
Marc
la source
J'ai essayé de mettre le contenu minimal répertorié dans /etc/phpmyadmin/conf.d/slaveA.conf.php et j'ai simplement vu le contenu en haut de la page PHPMyAdmin. Quand j'ai mis ce même contenu au fond de config.inc.php, cela a fonctionné. Quelque chose à propos de cette inclusion semble tout gâcher. Sinon, cela semble être le moyen attendu de créer une configuration personnalisée qui ne sera pas supprimée dans les mises à jour.
flickerfly
1
@flickerfly, réponse tardive mais le code dans les fichiers de configuration doit commencer par <?php, comme tout autre script PHP.
Marc
4

Je pense que c'est la façon la plus précise de le faire:

Configurez d'abord le mot de passe:

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

Désactivez ensuite la sécurité:

sudo pma-configure

Ensuite, allez sur http: // yourserver / phpmyadmin / setup (ici les navigateurs demandent l'authentification, l'utilisateur est admin et le mot de passe est ce que vous écrivez dans la première commande), avec cet assistant vous configurez vos serveurs, une fois terminé, mettez le la sécurité à nouveau:

sudo pma-secure
diegueus9
la source
Le fichier de configuration généré par cette méthode est stocké dans /var/lib/phpmyadmin/config.inc.php.
Michael Lawton
Ce fichier de configuration généré par cette méthode est ensuite inclus dans le fichier de configuration principal à /etc/phpmyadmin/config.inc.php. Le script d'installation de phpMyAdmin est bogué sur Ubuntu et ne charge pas la configuration existante (vous forçant à recommencer à zéro chaque fois que vous le configurez). De plus, la configuration qu'il génère comprend des éléments comme le secret de Blowfish qui est ensuite remplacé par le fichier de configuration principal. Vous constaterez que le premier serveur (1) est remplacé par le fichier de configuration principal, qui utilise les valeurs de serveur de config-db.php.
Michael Lawton
2

J'ai supposé ce qui suit:

  • /etc/phpmyadmin/ serait l'endroit le plus logique pour ajouter la config
  • /etc/phpmyadmin/config-db.phpest l'emplacement de la configuration par défaut (locale?). C'est parce que c'est une valeur par défaut, une seule base de données
  • /etc/phpmyadmin/config.inc.phplit la base de données par défaut pour en avoir une. Au moins celui-ci est utilisé, vous avez donc une base de données. Si quelque chose change dans votre configuration, le config-db.phpest changé, donc les modifications «locales» de votre fichier ne sont pas modifiées

Par conséquent, ma conclusion était que l'ajout d'un serveur supplémentaire en dessous de cette partie:

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

Cela ressemble au meilleur endroit.

Nanne
la source
1

Selon la documentation de phpMyAdmin , vous pouvez définir plusieurs serveurs dans la $cfg['Servers']baie définie dans le config.inc.phpfichier.

Carsten Thiel
la source
2
Dans une installation générique de phpMyAdmin, oui. Mais Ubuntu a ses propres fichiers de configuration pour générer cette partie du fichier config.inc.php, et je veux connaître la façon dont Ubuntu le configure, sans avoir à remplacer la configuration Ubuntu.
Mike Scott
Je vois. Les commentaires dans le dossier disent You can regenerate it using: dpkg-reconfigure -plow phpmyadmin. Je suppose que vous avez essayé ça? (ne le fera pas sur le système de production maintenant) Autre que cela ... les fichiers modifiés manuellement doivent être invités à la mise à jour avant d'être remplacés.
Carsten Thiel
2
Oui, je peux régénérer le fichier config-db.php, mais le fichier de configuration à partir duquel il obtient les paramètres de connexion à la base de données (/etc/dbconfig-common/phpmyadmin.conf) n'a de place que pour configurer un serveur de base de données. Je veux savoir comment configurer plusieurs serveurs de base de données.
Mike Scott
+ Mike Scott, je n'ai pas pu faire fonctionner $ cfg ['Servers'] dans un fichier conf.d /, mais quand je l'ai mis dans config.inc.php, cela a bien fonctionné. Je pense qu'il y a un bogue avec lequel la déclaration d'inclusion s'embrouille.
flickerfly
1

Le fichier de configuration principal est stocké dans /etc/phpmyadmin/config.inc.php. Ce fichier contient le

  • Blowfish secret de /var/lib/phpmyadmin/blowfish_secret.inc.php
  • Configuration générée à partir du script d'installation de phpMyAdmin (méthode de diegueus9) /var/lib/phpmyadmin/config.inc.php
  • Valeurs de base de données à partir /etc/phpmyadmin/config-db.phpdesquelles sont générées /etc/dbconfig-common/phpmyadmin.confpar /usr/sbin/dbconfig-generate-include. /etc/dbconfig-common/phpmyadmin.confpeut être modifié en utilisantdpkg-reconfigure -plow phpmyadmin
  • Fichiers de configuration supplémentaires de /etc/phpmyadmin/conf.d/*.php

Quelques exemples d'extraits de configuration sont /usr/share/doc/phpmyadmin/examplesinclus config.manyhosts.inc.php. Ce fichier peut être ajouté à /etc/phpmyadmin/conf.d. Il fonctionne en réinitialisant la ivariable à 1 avant de créer des hôtes afin qu'elle écrase l'ensemble d'hôtes dans /etc/phpmyadmin/config.inc.php.

Si vous souhaitez effectuer une configuration plus avancée, vous souhaiterez probablement modifier le /etc/phpmyadmin/config.inc.phpfichier et éventuellement ajouter d'autres extensions de configuration à l'aide de /etc/phpmyadmin/conf.d.

Pour ajouter la prise en charge de configurations supplémentaires à des fichiers de configuration plus anciens, vous pouvez créer le répertoire /etc/phpmyadmin/conf.d, puis ajouter le code PHP ci-dessous au bas de /etc/phpmyadmin/config.inc.php:

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
Michael Lawton
la source