diff --git a/AUTHORS b/AUTHORS
index 79e338a770e33222f42ff2520ebd5da183bf9c9c..ea31cba9cb37782274fe3c1f741e28362b1a6a7f 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -22,4 +22,5 @@ Martin Krafft madduck@debian.org -- admingroup patch
 Anarcat -- lotsa patches
 Jamie McClelland -- cstream patches
 ale -- ldap cleanup
-Sami Haahtinen <ressu@ressukka.net>
\ No newline at end of file
+Sami Haahtinen <ressu@ressukka.net>
+Matthew Palmer -- mysql enhancements
diff --git a/ChangeLog b/ChangeLog
index 7682a29fde3fe11149e1179ffad4c9fd60152d50..983341e28afde380bacd2e913d5b4ff4625b69eb 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -28,6 +28,10 @@ version 0.9.5 -- unreleased
 	   the data from a backup, but still backup the table structure. This is very
 	   useful in cases where tables contain large amounts of cache data. See the
 	   example.mysql for options, thanks Daniel Bonniot (Closes: #408829)
+	 . Enhance code for selecting databases by asking MySQL not to give us the 
+	   header (-N), to not draw pretty boxes around the output (-B), send the query 
+	   via -e instead of a pipe and ensure MySQL listens to -B. Thanks to
+	   Matthew Palmer (Closes: #452039).
 	pgsql:
 	 . Support configuring PGSQLUSER for real, and document it a bit; this
 	   broken support actually prevented pgsql handler to work for VServers
diff --git a/handlers/mysql.in b/handlers/mysql.in
index 64b6f492188b31429ceb9249abd9c748fd68d99c..defb72aa8aeb98713d807024a5a488bcbca43cdd 100644
--- a/handlers/mysql.in
+++ b/handlers/mysql.in
@@ -238,7 +238,7 @@ then
 	        fatal "Authentication problem, maybe user/password is wrong or mysqld is not running?"
 	    fi
 	else
-		databases=`echo 'show databases' | su $user -c "$MYSQL $defaultsfile" | grep -v Database`
+		databases=$(su $user -c "$MYSQL $defaultsfile -N -B -e 'show databases'" | sed 's/|//g;/\+----/d')
 		if [ $? -ne 0 ]
 		then
 		    fatal "Authentication problem, maybe user/password is wrong or mysqld is not running?"