diff --git a/ChangeLog b/ChangeLog
index 39e028e19..e1948e913 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -7,6 +7,7 @@ $HeadURL: https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/trunk/phpMyA
3.2.1.0 (not yet released)
- bug #2799009 Login with ipv6 IP address breaks redirect
+- bug #2796066 [priv] Inconsistent display of databases list
3.2.0.0 (not yet released)
- [core] better support for vendor customisation (based on what Debian needs)
diff --git a/server_privileges.php b/server_privileges.php
index acad908f7..d2b37edb1 100644
--- a/server_privileges.php
+++ b/server_privileges.php
@@ -1859,13 +1859,7 @@ if (empty($_REQUEST['adduser']) && (! isset($checkprivs) || ! strlen($checkprivs
// no database name was given, display select db
- if (! empty($found_rows)) {
- $pred_db_array = array_diff(
- PMA_DBI_fetch_result('SHOW DATABASES;'),
- $found_rows);
- } else {
- $pred_db_array =PMA_DBI_fetch_result('SHOW DATABASES;');
- }
+ $pred_db_array =PMA_DBI_fetch_result('SHOW DATABASES;');
echo ' ' . "\n";
if (!empty($pred_db_array)) {
@@ -1873,8 +1867,14 @@ if (empty($_REQUEST['adduser']) && (! isset($checkprivs) || ! strlen($checkprivs
. ' ' . "\n";
foreach ($pred_db_array as $current_db) {
$current_db = PMA_escape_mysql_wildcards($current_db);
- echo ' ' . "\n";
+ // cannot use array_diff() once, outside of the loop,
+ // because the list of databases has special characters
+ // already escaped in $found_rows,
+ // contrary to the output of SHOW DATABASES
+ if (empty($found_rows) || ! in_array($current_db, $found_rows)) {
+ echo ' ' . "\n";
+ }
}
echo ' ' . "\n";
}