diff --git a/plugins/module_utils/user.py b/plugins/module_utils/user.py index b2de38df..87f2572e 100644 --- a/plugins/module_utils/user.py +++ b/plugins/module_utils/user.py @@ -155,10 +155,10 @@ def user_add(cursor, user, host, host_all, password, encrypted, attributes, tls_requires, reuse_existing_password, module): # we cannot create users without a proper hostname if host_all: - return {'changed': False, 'password_changed': False} + return {'changed': False, 'password_changed': False, 'attributes': {}} if module.check_mode: - return {'changed': True, 'password_changed': None} + return {'changed': True, 'password_changed': None, 'attributes': {}} # If attributes are set, perform a sanity check to ensure server supports user attributes before creating user if attributes and not get_attribute_support(cursor): @@ -417,6 +417,8 @@ def user_mod(cursor, user, host, host_all, password, encrypted, privileges_revoke(cursor, user, host, db_table, revoke_privs, grant_option, maria_role) if len(grant_privs) > 0: privileges_grant(cursor, user, host, db_table, grant_privs, tls_requires, maria_role) + else: + changed = True # after privilege manipulation, compare privileges from before and now after_priv = privileges_get(cursor, user, host, maria_role) @@ -969,11 +971,12 @@ def get_attribute_support(cursor): # information_schema.tables does not hold the tables within information_schema itself cursor.execute("SELECT attribute FROM INFORMATION_SCHEMA.USER_ATTRIBUTES LIMIT 0") cursor.fetchone() - except mysql_driver.OperationalError: + except mysql_driver.Error: return False return True + def attributes_get(cursor, user, host): """Get attributes for a given user. @@ -999,6 +1002,7 @@ def attributes_get(cursor, user, host): return None + def get_impl(cursor): global impl cursor.execute("SELECT VERSION()") diff --git a/plugins/modules/mysql_role.py b/plugins/modules/mysql_role.py index e8920933..57137913 100644 --- a/plugins/modules/mysql_role.py +++ b/plugins/modules/mysql_role.py @@ -931,7 +931,7 @@ def update(self, users, privs, check_mode=False, if privs: result = user_mod(self.cursor, self.name, self.host, None, None, None, None, None, None, - privs, append_privs, subtract_privs, None, + privs, append_privs, subtract_privs, None, None, self.module, role=True, maria_role=self.is_mariadb) changed = result['changed'] diff --git a/plugins/modules/mysql_user.py b/plugins/modules/mysql_user.py index 1d4aad3a..bf83b3c3 100644 --- a/plugins/modules/mysql_user.py +++ b/plugins/modules/mysql_user.py @@ -166,7 +166,7 @@ version_added: '3.8.0' attributes: description: - - Create, update, or delete user attributes (arbitrary "key: value" comments) for the user. + - "Create, update, or delete user attributes (arbitrary 'key: value' comments) for the user." - MySQL server must support the INFORMATION_SCHEMA.USER_ATTRIBUTES table. Provided since MySQL 8.0. - To delete an existing attribute, set its value to False. type: dict