I wrote a simple query for checking daily if there are any users with blank passwords for a client which uses the IF EXISTS syntax.
Client has a mix of MySQL 5.1, 5.5, 5.6, 5.7, Aurora, and RDS.
The need for this query was because the mysql.user table is different in MySQL 5.7. The password column was removed and the hash was changed to be stored in the authentication_String column. I needed to be able to run a different query depending on the version. This query gets run on thousands of servers and is rolled up as part of a report.
SELECT IF (EXISTS(
SELECT @@version
FROM DUAL
WHERE @@version LIKE '5.1%'
OR @@version LIKE '5.5%'
OR @@version LIKE '5.6%'
)
,concat('SELECT user, host, \'users\' FROM mysql.user WHERE password = \'\';')
,concat('SELECT user, host, \'users\' FROM mysql.user WHERE authentication_String = \'\';')) into @a;
SELECT @a;
PREPARE stmt1 FROM @a;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
No comments:
Post a Comment