use separate task for role detection

Signed-off-by: Martin Schurz <[email protected]>
This commit is contained in:
Martin Schurz committed 2023-11-11 15:36:26 +01:00
1 parent 2c18d3afda
commit 36715017d7
1 file changed
+22 -20
@@ -46,29 +46,31 @@
login_unix_socket: "{{ login_unix_socket | default(omit) }}"
when: mysql_remove_remote_root
- name: detect role support on MySQL version >= 5.7.6 or Mariadb version >= 10.4.0
community.mysql.mysql_query:
query: >
SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'mysql' AND TABLE_NAME = 'user'
AND COLUMN_NAME = 'is_role')
login_unix_socket: "{{ login_unix_socket | default(omit) }}"
register: mysql_role_support
when: >
(mysql_distribution == "mysql" and mysql_version.version.full is version('5.7.6', '>=')) or
(mysql_distribution == "mariadb" and mysql_version.version.full
is version('10.4.0', '>='))
- name: Get all users that have no authentication_string on MySQL version >= 5.7.6 or Mariadb version >= 10.4.0
community.mysql.mysql_query:
query: >
IF (EXISTS (SELECT 1 FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'mysql' AND TABLE_NAME = 'user'
AND COLUMN_NAME = 'is_role')) THEN
SELECT CONCAT(QUOTE(USER), '@', QUOTE(HOST)) AS user
FROM mysql.user
WHERE (length(authentication_string)=0
OR authentication_string="")
AND USER NOT IN ('mysql.sys',
'mysqlxsys',
'mariadb.sys')
AND is_role="N";
ELSE
SELECT CONCAT(QUOTE(USER), '@', QUOTE(HOST)) AS user
FROM mysql.user
WHERE (length(authentication_string)=0
OR authentication_string="")
AND USER NOT IN ('mysql.sys',
'mysqlxsys',
'mariadb.sys');
END IF;
SELECT CONCAT(QUOTE(USER), '@', QUOTE(HOST)) AS user
FROM mysql.user
WHERE (length(authentication_string)=0
OR authentication_string="")
AND USER NOT IN ('mysql.sys',
'mysqlxsys',
'mariadb.sys')
{{ 'AND is_role="N"' if mysql_role_support.rowcount[0] > 0 }};
login_unix_socket: "{{ login_unix_socket | default(omit) }}"
register: mysql_users_wo_passwords_or_auth_string
check_mode: false