added the GRANT privilege for a mysql user (WITH GRANT OPTION)

This commit is contained in:
Stijn Opheide 2012-10-18 19:27:18 +02:00
parent f1f44843c3
commit 6b92b69fe6

View file

@ -170,11 +170,13 @@ def privileges_get(cursor, user,host):
cursor.execute("SHOW GRANTS FOR %s@%s", (user,host))
grants = cursor.fetchall()
for grant in grants:
res = re.match("GRANT\ (.+)\ ON\ (.+)\ TO", grant[0])
res = re.match("GRANT\ (.+)\ ON\ (.+)\ TO\ '.+'@'.+'[\ IDENTIFIED\ BY\ PASSWORD\ '.+']?\ ?(.*)", grant[0])
if res is None:
module.fail_json(msg="unable to parse the MySQL grant string")
privileges = res.group(1).split(", ")
privileges = ['ALL' if x=='ALL PRIVILEGES' else x for x in privileges]
if res.group(3) == "WITH GRANT OPTION":
privileges.append('GRANT')
db = res.group(2).replace('`', '')
output[db] = privileges
return output
@ -205,8 +207,12 @@ def privileges_revoke(cursor, user,host,db_table):
cursor.execute(query)
def privileges_grant(cursor, user,host,db_table,priv):
priv_string = ",".join(priv)
priv_string = ",".join(filter(lambda x: x != 'GRANT', priv))
query = "GRANT %s ON %s TO '%s'@'%s'" % (priv_string,db_table,user,host)
if 'GRANT' in priv:
query = query + " WITH GRANT OPTION"
cursor.execute(query)
def load_mycnf():