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;