[英]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.