繁体   English   中英

如何添加用户名/密码访问phpMyAdmin,独立于“链接”服务器?

[英]How do I add username/password access to phpMyAdmin, independent of 'linked' servers?

我们必须在不同的服务器上管理和快速切换的服务器上大约有10个(并在计数)数据库,并且每次访问服务器时都要连续输入每个服务器的密码已变得毫无用处。

我想实现对phpMyAdmin的全局用户名/密码访问。 我尝试使用我们的Intranet现有的用户身份验证过程,该过程使用PHP会话,但这会干扰phpMyAdmin的会话使用。

有办法可以做到吗? 一个插件? 我需要了解的PMA代码中是否有协议?

基本上,我尝试将其插入config.inc.php ,但是它只是被忽略了:

if ( isset ( $_SESSION["myIntranetAuth"] ) and $_SESSION["myIntranetAuth"] == true)
{
    $cfg['Servers'][$i]['host'] = 'remote.database.server.net';
    $cfg['Servers'][$i]['user'] = 'database1';
    $cfg['Servers'][$i]['password'] = 'Password123';
    // etc - for all servers/databases
}

我也尝试将其插入phpMyAdmin的index.php的顶部,但它也被忽略:

if ( ! isset ( $_SESSION["myIntranetAuth"] ) or $_SESSION["myIntranetAuth"] != TRUE )
{
    exit ( header( "Location: https://myintranet.com/login" ) );
}

我什至包括if( session_id() == "" ) session_start(); 在两种情况下,但它告诉我:

致命错误:main():脚本试图执行方法或访问不完整对象的属性。 请确保在调用unserialize() 之前已加载要尝试操作的对象的类定义“ PMA_Theme_Manager”,或提供__autoload()函数以将类定义加载到/ usr / www / users / me / myintranet中。第686行的com / pma / libraries / common.inc.php

我在打一场失败的战斗吗?

我不确定该解决方案是否强大或安全,但是到目前为止是否有效。 欢迎任何警告。

我在config.inc.php使用了以下内容:

if( session_id() == "" ) session_start();

if ( isset ( $_SESSION["myIntranetAuth"] ) and $_SESSION["myIntranetAuth"] == true)
{
    $cfg['Servers'][$i]['host'] = 'remote.database.server.net';
    $cfg['Servers'][$i]['user'] = 'database1';
    $cfg['Servers'][$i]['password'] = 'Password123';
    // etc - for all servers/databases
}

并在session.inc.php注释掉session_start() (第101行,版本4.3.8,否则未修改)以删除持久性“会话已开始”消息。

正如Blaatpraat在评论中提到的那样,在phpMyAdmin中正确执行此操作的理想方法是使用“登录” auth_type。

另一种稍微麻烦一点但工作量少的替代方法是将每个服务器设置为auth_type config并通过其他方式(例如执行HTTP BASIC身份验证的.htaccess文件或您提到的现有身份验证过程)保护phpMyAdmin安装的安全。 这样,不会提示您的用户分别登录每个服务器,并且您的Web服务器会提供身份验证以保护phpMyAdmin安装。 不利之处在于每个用户然后都使用相同的MySQL用户帐户,这对您的配置是有利还是不利。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM