如何配置phpMyAdmin访问多个服务器?


13

Ubuntu如何配置phpMyAdmin以便我可以使用它来管理多个MySQL服务器?数据库参数是在中设置的/etc/dbconfig-common/phpmyadmin.conf,但是其中只有一个服务器用于连接参数的空间。我可以将其入侵到/etc/phpmyadmin/config-db.php和中/etc/phpmyadmin/config.inc.php,但是我认为必须有一种更优雅的方法。


您是否找到解决方案来做到这一点?您是否入侵了您提到的文件之一?
Nanne

本教程说明了如何从一个phpMyAdmin安装中管理多个MySQL服务器。出于安全原因,phpMyAdmin与任何远程MySQL服务器之间的通信均使用SSL加密

Answers:


8

相当老的问题,但仍与搜索相关。

phpMyAdmin对配置文件使用普通的PHP,并且 $cfg['Servers']数组来获取已配置的服务器。

因此,正确的方法是为要添加的/etc/phpmyadmin/conf.d每个服务器添加一个新的配置文件。仅需以文件名结尾.php才能包含它们,但这your_new_server.inc.php是保持一致性的一个好主意。

给定配置文件的最小内容为:

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

如另一个答案所述,您可以检查/usr/share/doc/phpmyadmin/examples/config.manyhosts.inc.php文件中的更多参数。

重要信息:您必须为每个新文件增加数组的索引(2),如果要继续连接到本地主机,请避免使用1。

如果包phpMyAdmin的人考虑过,他们可以$i在包含conf.d目录中文件的foreach中添加增量变量,因此您可以将其用作索引,而不必担心手动增加它,但可惜不是这样。您可以自己做。


[2019]:较新的PHP版本允许此更简洁的替代语法:

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

我尝试将/etc/phpmyadmin/conf.d/slaveA.conf.php中列出的最低限度内容放到PHPMyAdmin页面的顶部。当我将相同的内容放入config.inc.php的底部时,它起作用了。关于它的一些东西似乎弄糟了。否则,这似乎是创建自定义配置的预期方法,该更新不会被杀死。
flickerfly'Mar

1
@flickerfly,较晚的答案,但配置文件中的代码必须与<?php其他任何PHP脚本一样以开头。
马克

4

我认为这是最准确的方法:

首先设置密码:

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

然后禁用安全性:

sudo pma-configure

然后转到http:// yourserver / phpmyadmin / setup(此处浏览器要求auth,用户是admin,密码是您在第一个命令中输入的密码),并使用该向导配置服务器,完成后,将再次安全:

sudo pma-secure

通过此方法生成的配置文件存储在/var/lib/phpmyadmin/config.inc.php中。
迈克尔·劳顿

然后,通过此方法生成的此配置文件包含在/etc/phpmyadmin/config.inc.php的主配置文件中。phpMyAdmin设置脚本在Ubuntu上存在问题,并且不会加载现有配置(每次配置时都会从头开始)。它生成的配置还包括河豚秘密之类的东西,然后被主配置文件覆盖。您会发现第一个服务器(1)被主配置文件覆盖,该文件使用config-db.php中的服务器值。
迈克尔·劳顿

2

我假设以下内容:

  • /etc/phpmyadmin/ 将是添加配置的最合逻辑的地方
  • /etc/phpmyadmin/config-db.php是默认(本地?)配置的位置。因为这是默认设置,所以仅一个数据库
  • /etc/phpmyadmin/config.inc.php读取默认数据库,因此它具有一个。至少要使用此数据库,所以您有一个数据库。如果您的配置config-db.php发生更改,则更改,因此不会修改文件的“本地”更改

因此,我的结论是在这部分下面添加了一个额外的服务器:

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

这看起来是最好的地方。


1

根据phpMyAdmin 文档,您可以在文件中定义的$cfg['Servers']阵列中定义多个服务器config.inc.php


2
在通用的phpMyAdmin安装中,可以。但是Ubuntu拥有自己的配置文件来生成config.inc.php文件的该部分,我想知道Ubuntu的配置方法,而不必覆盖Ubuntu配置。
Mike Scott

我知道了。文件中的注释说You can regenerate it using: dpkg-reconfigure -plow phpmyadmin。我想你尝试过吗?(现在不在生产系统上执行此操作)除此之外...手动更改的文件应在更新前提示更新,然后再覆盖。
Carsten Thiel

2
是的,我可以重新生成文件config-db.php,但是从中获取数据库连接参数(/etc/dbconfig-common/phpmyadmin.conf)的配置文件仅具有配置一台数据库服务器的空间。我想知道如何配置多个数据库服务器。
Mike Scott

+麦克·斯科特,我无法让$ cfg ['服务器']在conf.d /文件中工作,但是当我将它放在config.inc.php中时,它可以正常工作。我在想include语句有一些错误。
flickerfly

1

主配置文件存储在中/etc/phpmyadmin/config.inc.php。该文件包括

  • 河豚的秘密来自 /var/lib/phpmyadmin/blowfish_secret.inc.php
  • 从phpMyAdmin安装脚本生成的配置(diegueus9的方法) /var/lib/phpmyadmin/config.inc.php
  • 从DB值 /etc/phpmyadmin/config-db.php其由产生/etc/dbconfig-common/phpmyadmin.conf通过/usr/sbin/dbconfig-generate-include/etc/dbconfig-common/phpmyadmin.conf可以使用修改dpkg-reconfigure -plow phpmyadmin
  • 来自的额外配置文件 /etc/phpmyadmin/conf.d/*.php

一些示例性配置片段是/usr/share/doc/phpmyadmin/examples包括config.manyhosts.inc.php。此文件可以添加到中/etc/phpmyadmin/conf.d。通过i在创建任何主机之前将变量重置为1来工作,以便它覆盖中设置的主机/etc/phpmyadmin/config.inc.php

如果您想进行更高级的配置,则可能需要更改/etc/phpmyadmin/config.inc.php文件,并可能使用添加其他配置扩展名/etc/phpmyadmin/conf.d

要向较旧的配置文件添加对其他配置的支持,可以创建目录/etc/phpmyadmin/conf.d,然后将以下PHP代码添加到以下内容的底部/etc/phpmyadmin/config.inc.php

/* Support additional configurations */
foreach (glob('/etc/phpmyadmin/conf.d/*.php') as $filename) {
        include($filename);
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.