diff --git a/ChangeLog b/ChangeLog index c8d62dbdfb..243292d6d2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -97,6 +97,7 @@ phpMyAdmin - ChangeLog - issue Do not export `sys` database when exporting server - issue #11436 CREATE DATABASE should be enabled by default on server exports - issue #11442 MySQL 5.7 and SHOW VARIABLES +- issue #11445 MySQL 5.7 and Status page for an unprivileged user 4.4.15.0 (not yet released) - issue #11411 Undefined "replace" function on numeric scalar diff --git a/js/server_status_advisor.js b/js/server_status_advisor.js index eb1a5f89fb..c2e3b6bac8 100644 --- a/js/server_status_advisor.js +++ b/js/server_status_advisor.js @@ -16,6 +16,12 @@ AJAX.registerTeardown('server_status_advisor.js', function () { }); AJAX.registerOnload('server_status_advisor.js', function () { + + // if no advisor is loaded + if ($('#advisorData').length == 0) { + return; + } + /**** Server config advisor ****/ var $dialog = $('
').attr('id', 'advisorDialog'); var $instructionsDialog = $('
') diff --git a/libraries/ServerStatusData.class.php b/libraries/ServerStatusData.class.php index ce08fa2878..9cf958a08b 100644 --- a/libraries/ServerStatusData.class.php +++ b/libraries/ServerStatusData.class.php @@ -34,6 +34,7 @@ class PMA_ServerStatusData public $section; public $sectionUsed; public $selfUrl; + public $dataLoaded; /** * An empty setter makes the above properties read-only @@ -314,7 +315,18 @@ class PMA_ServerStatusData $this->selfUrl = basename($GLOBALS['PMA_PHP_SELF']); // get status from server - $server_status = $GLOBALS['dbi']->fetchResult('SHOW GLOBAL STATUS', 0, 1); + $server_status_result = $GLOBALS['dbi']->tryQuery('SHOW GLOBAL STATUS'); + $server_status = array(); + if ($server_status_result === false) { + $this->dataLoaded = false; + } else { + $this->dataLoaded = true; + while ($arr = $GLOBALS['dbi']->fetchRow($server_status_result)) { + $server_status[$arr[0]] = $arr[1]; + } + $GLOBALS['dbi']->freeResult($server_status_result); + } + if (PMA_DRIZZLE) { // Drizzle doesn't put query statistics into variables, add it $sql = "SELECT concat('Com_', variable_name), variable_value " diff --git a/server_status.php b/server_status.php index 8b0b34d940..a69b84c84f 100644 --- a/server_status.php +++ b/server_status.php @@ -23,15 +23,22 @@ if (PMA_DRIZZLE) { include_once 'libraries/replication_gui.lib.php'; } -$ServerStatusData = new PMA_ServerStatusData(); - /** * start output */ $response = PMA_Response::getInstance(); $response->addHTML('
'); -$response->addHTML($ServerStatusData->getMenuHtml()); -$response->addHTML(PMA_getHtmlForServerStatus($ServerStatusData)); -$response->addHTML('
'); +$serverStatusData = new PMA_ServerStatusData(); +$response->addHTML($serverStatusData->getMenuHtml()); +if ($serverStatusData->dataLoaded) { + $response->addHTML(PMA_getHtmlForServerStatus($serverStatusData)); +} else { + $response->addHTML( + PMA_Message::error( + __('Not enough privilege to view server status.') + )->getDisplay() + ); +} +$response->addHTML('
'); exit; diff --git a/server_status_advisor.php b/server_status_advisor.php index 24da2c81f6..eb2e57c86b 100644 --- a/server_status_advisor.php +++ b/server_status_advisor.php @@ -20,7 +20,7 @@ if (PMA_DRIZZLE) { include_once 'libraries/replication_gui.lib.php'; } -$ServerStatusData = new PMA_ServerStatusData(); +$serverStatusData = new PMA_ServerStatusData(); $response = PMA_Response::getInstance(); $scripts = $response->getHeader()->getScripts(); @@ -30,8 +30,16 @@ $scripts->addFile('server_status_advisor.js'); * Output */ $response->addHTML('
'); -$response->addHTML($ServerStatusData->getMenuHtml()); -$response->addHTML(PMA_getHtmlForAdvisor()); +$response->addHTML($serverStatusData->getMenuHtml()); +if ($serverStatusData->dataLoaded) { + $response->addHTML(PMA_getHtmlForAdvisor()); +} else { + $response->addHTML( + PMA_Message::error( + __('Not enough privilege to view the advisor.') + )->getDisplay() + ); +} $response->addHTML('
'); exit; diff --git a/server_status_queries.php b/server_status_queries.php index acea8cfacb..99a83b7f05 100644 --- a/server_status_queries.php +++ b/server_status_queries.php @@ -21,7 +21,7 @@ if (PMA_DRIZZLE) { include_once 'libraries/replication_gui.lib.php'; } -$ServerStatusData = new PMA_ServerStatusData(); +$serverStatusData = new PMA_ServerStatusData(); $response = PMA_Response::getInstance(); $header = $response->getHeader(); @@ -46,7 +46,15 @@ $scripts->addFile('server_status_sorter.js'); // Add the html content to the response $response->addHTML('
'); -$response->addHTML($ServerStatusData->getMenuHtml()); -$response->addHTML(PMA_getHtmlForQueryStatistics($ServerStatusData)); +$response->addHTML($serverStatusData->getMenuHtml()); +if ($serverStatusData->dataLoaded) { + $response->addHTML(PMA_getHtmlForQueryStatistics($serverStatusData)); +} else { + $response->addHTML( + PMA_Message::error( + __('Not enough privilege to view query statistics.') + )->getDisplay() + ); +} $response->addHTML('
'); exit; diff --git a/server_status_variables.php b/server_status_variables.php index 2038dc5c42..735cc3aea6 100644 --- a/server_status_variables.php +++ b/server_status_variables.php @@ -36,7 +36,7 @@ if (isset($_REQUEST['flush'])) { unset($_flush_commands); } -$ServerStatusData = new PMA_ServerStatusData(); +$serverStatusData = new PMA_ServerStatusData(); $response = PMA_Response::getInstance(); $header = $response->getHeader(); @@ -46,10 +46,18 @@ $scripts->addFile('jquery/jquery.tablesorter.js'); $scripts->addFile('server_status_sorter.js'); $response->addHTML('
'); -$response->addHTML($ServerStatusData->getMenuHtml()); -$response->addHTML(PMA_getHtmlForFilter($ServerStatusData)); -$response->addHTML(PMA_getHtmlForLinkSuggestions($ServerStatusData)); -$response->addHTML(PMA_getHtmlForVariablesList($ServerStatusData)); +$response->addHTML($serverStatusData->getMenuHtml()); +if ($serverStatusData->dataLoaded) { + $response->addHTML(PMA_getHtmlForFilter($serverStatusData)); + $response->addHTML(PMA_getHtmlForLinkSuggestions($serverStatusData)); + $response->addHTML(PMA_getHtmlForVariablesList($serverStatusData)); +} else { + $response->addHTML( + PMA_Message::error( + __('Not enough privilege to view status variables.') + )->getDisplay() + ); +} $response->addHTML('
'); exit;