【问题标题】:Configure phpMyAdmin with multiple databases and http auth?使用多个数据库和 http auth 配置 phpMyAdmin?
【发布时间】:2017-06-19 20:36:41
【问题描述】:

我想配置 phpMyAdmin 访问多个 mysql 服务器,并使用“http auth”登录(使用 mysql 数据库登录)。但是它似乎不起作用,我不确定它是否可能?当然,我首先阅读了几十个文档、论坛和网页,没有任何关于 tihs 的信息。

这是我的配置(仅适用于第一台服务器):

/* Server: svrdb01 [1] */
$i++;
$cfg['Servers'][$i]['verbose'] = 'svrdb01';
$cfg['Servers'][$i]['host'] = '10.128.1.1';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['auth_http_realm'] = 'Login MySQL 1';
/* Server: svrdb02 [2] */
$i++;
$cfg['Servers'][$i]['verbose'] = 'svrdb02';
$cfg['Servers'][$i]['host'] = '10.128.1.2';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['auth_http_realm'] = 'Login MySQL 2';
/* Server: svrdb04 [3] */
$i++;
$cfg['Servers'][$i]['verbose'] = 'svrdb04';
$cfg['Servers'][$i]['host'] = '10.128.1.4';
$cfg['Servers'][$i]['port'] = '';
$cfg['Servers'][$i]['socket'] = '';
$cfg['Servers'][$i]['connect_type'] = 'tcp';
$cfg['Servers'][$i]['extension'] = 'mysqli';
$cfg['Servers'][$i]['auth_type'] = 'http';
$cfg['Servers'][$i]['user'] = '';
$cfg['Servers'][$i]['password'] = '';
$cfg['Servers'][$i]['auth_http_realm'] = 'Login MySQL 3';

任何帮助都会很有用,尤其是在这 3 个问题上:

  1. 是否可以使用该逻辑配置 phpMyAdmin?
  2. 如果是,phpMyAdmin 是否会在每个后续服务器上尝试登录直到成功?
  3. 如果没有,有没有其他方法可以让 phpMyAdmin 使用 MySQL 登录多个服务器?

非常感谢您的帮助...

P。 S. 我已经在 serverfault 上问过这个问题,但没有人能够回答这个问题,我得到了一张不予任何解释的反对票。我希望 stackoverflow 上的人能够回答这个问题(或告诉我我的问题有什么问题)。

【问题讨论】:

    标签: mysql authentication configuration phpmyadmin


    【解决方案1】:

    你说这个配置文件“只适用于第一台服务器”——这究竟是什么意思?尝试更改到其他服务器时是否出现错误?您是否希望在登录前提示您要连接到哪个服务器?我很好奇,因为这似乎对我有用,但界面与 auth_type cookie 使用的界面不同,这可能会令人困惑。

    使用 auth_type cookie,第一页上的登录表单包含用户名、密码和用于选择主机的下拉列表。使用 auth_type http,您将获得用户名和密码的 HTTP 浏览器登录页面,并且必须在此处输入第一台服务器的用户名或密码。然后,一旦连接到第一台服务器,您就可以使用导航窗格中的服务器下拉菜单来选择另一台服务器(此下拉菜单也与其他 auth_types 一起出现)。我觉得这不太方便,因为我必须先连接到我的第一台服务器,然后才能连接到另一台服务器,所以我使用 auth_type cookie(它还可以让我退出并在出现问题时提供更好的错误报告)。

    您可以通过输入customized URL(或添加书签)来强制服务器; https://localhost/phpmyadmin/index.php?server=5 之类的东西,但即使这样似乎也需要对两台服务器(1 和 5)进行身份验证,然后我才能真正做任何事情。

    直接回答您的问题:

    是否可以使用该逻辑配置 phpMyAdmin ?

    当然,这很好用。

    如果是,phpMyAdmin 是否会在每个后续服务器上尝试登录直到成功?

    不,您必须登录到第一台服务器,然后跳转到您要连接的另一台服务器。

    如果没有,是否有另一种方法让 phpMyAdmin 使用 MySQL 登录多个服务器?

    auth_type cookie 是最好的,但即使使用 auth_type http 也可以,只要您了解这些限制并愿意解决这些限制。

    总之,我建议切换到 auth_type cookie,因为我发现它最容易使用。

    【讨论】:

    • 亲爱的@Isaac 非常感谢您完整而详细的回答!多亏了你,我想我解决了这个问题。但首先我会评论你的问题和我发现的东西的答案。
    • 首先,回答您的第一个问题:“仅适用于第一台服务器”意味着如果我输入在第一台服务器上有效的登录名/密码,我可以登录并使用 phpmyadmin。但是,如果我在第二台服务器上输入有效的登录名/密码,我根本无法登录。正如你所说,如果登录到第一台服务器和更改服务器并再次登录,它会起作用。但这当然是一种不受欢迎的行为,因为应该登录第三台服务器的用户不应该访问第一台服务器;-)
    • 然后,是的,我知道它适用于 auth_cookie,当然您可以在登录之前选择服务器。但首先,出于安全原因,我想避免使用 cookie,而且我不希望客户获得我们所有数据库服务器的列表。有些是针对客户的,不应公开。
    • 现在关于解决方案,我想我解决了问题!您在 URL 中添加服务器编号的想法是正确的。我花了一个小时和一些调试来了解所有登录和身份验证过程,但我认为现在很清楚,解决方案是使用以下 URL:localhost/phpmyadmin/?server=5
    【解决方案2】:

    基于@Isaac Bennetch 答案的解决方案是使用以下网址:

    注意 index.php 不能包含在 URL 中,否则它将不起作用。

    经过分析,这是正在执行的代码:

    1. libraries/plugins/auth/AuthenticationHttp.class.php - 公共函数 authSetUser() - 已定义登录名和密码
    2. libraries/dbi/mysqli.dbi.lib.php - 函数 PMA_DBI_connect()
    3. 同一个文件 - 函数 PMA_DBI_real_connect() - 真正连接到数据库

    如果您在这些地方添加调试,那么您可以检查使用哪个服务器并查看“?server=5”选择了正确的服务器。

    【讨论】:

      猜你喜欢
      • 2019-06-01
      • 1970-01-01
      • 2012-07-02
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 1970-01-01
      • 2011-04-09
      • 1970-01-01
      相关资源
      最近更新 更多