DBZ-6622 MySQL ALTER USER with RETAIN CURRENT PASSWORD fails with parsing exception

This commit is contained in:
harveyyue 2023-06-30 13:17:18 +08:00 committed by Chris Cranford
parent 9ba5e078d0
commit e211fe7d06
3 changed files with 19 additions and 7 deletions

View File

@ -1087,6 +1087,7 @@ POWER: 'POWER';
QUOTE: 'QUOTE';
RADIANS: 'RADIANS';
RAND: 'RAND';
RANDOM: 'RANDOM';
RANDOM_BYTES: 'RANDOM_BYTES';
RELEASE_LOCK: 'RELEASE_LOCK';
REVERSE: 'REVERSE';

View File

@ -1641,7 +1641,7 @@ alterUser
)?
(WITH userResourceOption+)?
(userPasswordOption | userLockOption)*
(COMMENT STRING_LITERAL | ATTRIBUTE STRING_LITERAL)? #alterUserMysqlV80
(COMMENT STRING_LITERAL | ATTRIBUTE STRING_LITERAL)? #alterUserMysqlV80
| ALTER USER ifExists?
(userName | uid) DEFAULT ROLE roleOption #alterUserMysqlV80
;
@ -1729,17 +1729,21 @@ userSpecification
userAuthOption
: userName IDENTIFIED BY PASSWORD hashed=STRING_LITERAL #hashAuthOption
| userName
IDENTIFIED BY STRING_LITERAL (RETAIN CURRENT PASSWORD)? #stringAuthOption
| userName
IDENTIFIED (WITH | VIA) // VIA is MariaDB-specific only
| userName IDENTIFIED BY RANDOM PASSWORD authOptionClause #randomAuthOption
| userName IDENTIFIED BY STRING_LITERAL authOptionClause #stringAuthOption
| userName IDENTIFIED (WITH | VIA) // VIA is MariaDB-specific only
authenticationRule (OR authenticationRule)* #moduleAuthOption // OR is MariaDB-specific only
| userName #simpleAuthOption
;
authOptionClause
: (REPLACE STRING_LITERAL)? (RETAIN CURRENT PASSWORD)?
;
authenticationRule
: authPlugin
((BY | USING | AS) STRING_LITERAL)? #module
((BY | USING | AS) (STRING_LITERAL | RANDOM PASSWORD)
authOptionClause)? #module
| authPlugin
(USING | AS) passwordFunctionClause #passwordModuleOption // MariaDB
;
@ -2869,7 +2873,7 @@ functionNameBase
| OVERLAPS | PERCENT_RANK | PERIOD_ADD | PERIOD_DIFF | PI | POINT
| POINTFROMTEXT | POINTFROMWKB | POINTN | POLYFROMTEXT
| POLYFROMWKB | POLYGON | POLYGONFROMTEXT | POLYGONFROMWKB
| POSITION | POW | POWER | QUARTER | QUOTE | RADIANS | RAND | RANK
| POSITION | POW | POWER | QUARTER | QUOTE | RADIANS | RAND | RANDOM | RANK
| RANDOM_BYTES | RELEASE_LOCK | REVERSE | RIGHT | ROUND
| ROW_COUNT | ROW_NUMBER | RPAD | RTRIM | SCHEMA | SECOND | SEC_TO_TIME
| SESSION_USER | SESSION_VARIABLES_ADMIN

View File

@ -131,6 +131,13 @@ alter user 'user'@'%' identified by 'newpassword' retain current password;
ALTER USER 'mattias.hultman' DEFAULT ROLE `prod-spain-mysql-read-only`@`%`;
rename user user1@100.200.1.1 to user2@100.200.1.2;
rename user user1@100.200.1.1 to user2@2001:0db8:85a3:0000:0000:8a2e:0370:7334;
ALTER USER 'test_dual_pass'@'%' IDENTIFIED BY RANDOM PASSWORD RETAIN CURRENT PASSWORD;
ALTER USER 'test_dual_pass'@'%' IDENTIFIED BY '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' RETAIN CURRENT PASSWORD;
ALTER USER 'test_dual_pass'@'%' IDENTIFIED WITH 'mysql_native_password';
ALTER USER 'test_dual_pass'@'%' IDENTIFIED WITH 'mysql_native_password' AS '*2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19';
ALTER USER 'test_dual_pass'@'%' IDENTIFIED WITH 'mysql_native_password' AS 'REDACTED' RETAIN CURRENT PASSWORD;
ALTER USER 'test_dual_pass'@'%' IDENTIFIED WITH 'mysql_native_password' BY '2470C0C06DEE42FD1618BB99005ADCA2EC9D1E19' REPLACE 'current_auth_string' RETAIN CURRENT PASSWORD;
ALTER USER 'test_dual_pass'@'%' IDENTIFIED WITH 'mysql_native_password' BY RANDOM PASSWORD REPLACE 'current_auth_string' RETAIN CURRENT PASSWORD;
#end
ALTER TABLE t1 ADD PARTITION (PARTITION p3 VALUES LESS THAN (2002));
ALTER TABLE t1 ADD PARTITION IF NOT EXISTS (PARTITION p3 VALUES LESS THAN (2002));