From 31c17b04840e87602b944631b1c8b3fdbccd9725 Mon Sep 17 00:00:00 2001 From: Jim Riggs Date: Wed, 3 Feb 2016 08:21:07 -0600 Subject: [PATCH] (#3028) Fix mysql_grant with MySQL ANSI_QUOTES mode Change mysql_grant provider to ignore/delete double-quotes -- as it does with single quotes and backticks -- in the returned list of existing grants. With ANSI_QUOTES enabled in MySQL's sql_mode, grant identifiers (e.g. database name) are quoted with double-quotes rather than backticks, for example "foo".* vs. `foo`.*. This breaks mysql_grant's evaluation of existing grants and causes it to apply grants with every run. --- lib/puppet/provider/mysql_grant/mysql.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/puppet/provider/mysql_grant/mysql.rb b/lib/puppet/provider/mysql_grant/mysql.rb index 8b19d2031..47f2a3f9a 100644 --- a/lib/puppet/provider/mysql_grant/mysql.rb +++ b/lib/puppet/provider/mysql_grant/mysql.rb @@ -25,7 +25,7 @@ def self.instances # Once we have the list of grants generate entries for each. grants.each_line do |grant| # Match the munges we do in the type. - munged_grant = grant.delete("'").delete("`") + munged_grant = grant.delete("'").delete("`").delete('"') # Matching: GRANT (SELECT, UPDATE) PRIVILEGES ON (*.*) TO ('root')@('127.0.0.1') (WITH GRANT OPTION) if match = munged_grant.match(/^GRANT\s(.+)\sON\s(.+)\sTO\s(.*)@(.*?)(\s.*)?$/) privileges, table, user, host, rest = match.captures