phpMyAdmin4 多用户环境中的 Howto disable/hide Navigation-Tab 'Status'

Howto disable/hide Navigation-Tab 'Status' in phpMyAdmin4 multi-user environment

我需要在 phpMyAdmin4 多用户环境中禁用导航选项卡 'Status'。 This post 解释了如何操作,但它似乎适用于以前版本的 phpMyAdmin。

如上文所述link 应该有一个名为'server_links.inc.php' 的文件。在 'usr/share/phpmyadmin/libraries/' 下不存在这样的文件...这些是我的 server_* 文件:

选项卡导航存储在哪个文件中? 我如何 disable/hide 'Status'-Tab? 隐藏 'Status'-Tab 后,如何限制对 SQL 查询的访问,例如 'SHOW STATUS'?

如果您想在不接触代码的情况下更改菜单选项卡,用户组功能可以做到这一点;参见 http://docs.phpmyadmin.net/en/latest/config.html?highlight=usergroup#cfg_Servers_usergroups

您也可以更改代码,在libraries/Menu.class.php.

这是我在 /phpmyadmin/libraries/Menu 中隐藏选项卡 'Status' 的工作代码。class.php:

if ($is_superuser) {
        $tabs['status']['icon'] = 's_status.png';
        $tabs['status']['link'] = 'server_status.php';
        $tabs['status']['text'] = __('Status');
        $tabs['status']['active'] = in_array(
            basename($GLOBALS['PMA_PHP_SELF']),
            array(
                'server_status.php',
                'server_status_advisor.php',
                'server_status_monitor.php',
                'server_status_queries.php',
                'server_status_variables.php'
            )
        );
    }

这是我在 /phpmyadmin/server_status.php 中的工作代码,如果不是超级用户则拒绝访问:

if (!$GLOBALS['dbi']->isSuperuser()) {
    $msg = PMA_Message::error(__('No Privileges'));
    $msg->display();
    exit;
}

注意属于server_status.php的其他文件也应该包含超级用户检查,这样就没有人可以直接访问这些文件:
'server_status_advisor.php',
'server_status_monitor.php',
'server_status_queries.php',
'server_status_variables.php'.

对于最新的 phpmyadmin,您可以在 libraries/classes/menu.php

参考函数_getMenu()

if (strlen((string) $this->_table) > 0) {
    $tabs = $this->_getTableTabs();
    $url_params['db'] = $this->_db;
    $url_params['table'] = $this->_table;
    $level = 'table';
} elseif (strlen($this->_db) > 0) {
    $tabs = $this->_getDbTabs();
    $url_params['db'] = $this->_db;
    $level = 'db';
} else {
    $tabs = $this->_getServerTabs();
    $level = 'server';
}

然后您可以修改您想要的菜单,比如编辑菜单 table 选项卡,然后编辑功能 _getTableTabs。例如。你想让菜单导出永久隐藏然后在下面注释这段代码

$tabs['export']['icon'] = 'b_tblexport';
$tabs['export']['link'] = 'tbl_export.php';
$tabs['export']['args']['single_table'] = 'true';
$tabs['export']['text'] = __('Export');

PS。此解决方案仅用于永久隐藏