diff --git a/plugins/module_utils/user.py b/plugins/module_utils/user.py index f2a603c..9d40129 100644 --- a/plugins/module_utils/user.py +++ b/plugins/module_utils/user.py @@ -552,17 +552,15 @@ def privileges_get(module, cursor, user, host, maria_role=False): if "WITH GRANT OPTION" in res.group(7): privileges.append('GRANT') - # Prevent to output 'ALL', 'ALL' because mysql 8 display all privileges - # with two lines as you can see in variable mysql8_all_privileges. - if ( - 'ALL' in privileges - and (['ALL'] in output.values() or ['ALL', 'GRANT'] in output.values()) - ): - continue - output.setdefault(db, []).extend(privileges) - return output + # Prevent to output 'ALL', 'ALL' because mysql 8 display all privileges + # with two lines as you can see in variable mysql8_all_privileges. + output_deduplicates = {} + for k, v in output.items(): + output_deduplicates[k] = list(set(v)) + + return output_deduplicates def normalize_col_grants(privileges): diff --git a/tests/integration/targets/test_mysql_info/tasks/filter_users_privs.yml b/tests/integration/targets/test_mysql_info/tasks/filter_users_privs.yml index 8d65593..45ccc6f 100644 --- a/tests/integration/targets/test_mysql_info/tasks/filter_users_privs.yml +++ b/tests/integration/targets/test_mysql_info/tasks/filter_users_privs.yml @@ -15,7 +15,10 @@ # ================================ Prepare ============================== - name: Mysql_info users_privs | Create databases community.mysql.mysql_db: - name: users_privs_db + name: + - users_privs_db + - users_privs_db2 + - users_privs_db3 state: present - name: Mysql_info users_privs | Create tables @@ -74,7 +77,9 @@ - name: users_privs_multi priv: 'mysql.*': 'SELECT' - 'users_privs_db.*': 'SELECT' + 'users_privs_db.*': 'ALL' + 'users_privs_db2.*': 'ALL' + 'users_privs_db3.*': 'ALL' - name: users_privs_usage_only priv: '*.*': 'USAGE' @@ -194,7 +199,10 @@ - name: Mysql_info users_privs | Cleanup databases community.mysql.mysql_db: - name: users_privs_db + name: + - users_privs_db + - users_privs_db2 + - users_privs_db3 state: absent - name: Mysql_info users_privs | Cleanup sql file for the procedure