From 66ffef596782dcecce6089aff38a803acc9e7fcd Mon Sep 17 00:00:00 2001 From: Stijn Tintel Date: Tue, 11 Jun 2013 14:37:30 +0200 Subject: [PATCH] Fix MySQL 5.6 compatibility In MySQL 5.6, the root account created by default during MySQL installation has the PROXY ... WITH GRANT OPTION privilege for ''@'', that is, for all users. The mysql_user module tries to revoke this privilege, but this fails: _mysql_exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '''@'' FROM 'root'@'localhost'' at line 1") Quick fix: don't revoke privilege if user is root and the privilege to revoke contains PROXY. --- database/mysql_user | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/database/mysql_user b/database/mysql_user index 9c61e7a6be6..5d0d0d68ed3 100644 --- a/database/mysql_user +++ b/database/mysql_user @@ -153,8 +153,9 @@ def user_mod(cursor, user, host, password, new_priv): # the new specification, then revoke all privileges on it. for db_table, priv in curr_priv.iteritems(): if db_table not in new_priv: - privileges_revoke(cursor, user,host,db_table) - changed = True + if user != "root" and "PROXY" not in priv: + privileges_revoke(cursor, user,host,db_table) + changed = True # If the user doesn't currently have any privileges on a db.table, then # we can perform a straight grant operation.