Skip to content

Commit

Permalink
[MySQL] MySQL ALTER USER with RETAIN CURRENT PASSWORD fails with pars…
Browse files Browse the repository at this point in the history
…ing exception
  • Loading branch information
harveyyue committed Jun 30, 2023
1 parent 59e9c49 commit b5e6106
Show file tree
Hide file tree
Showing 3 changed files with 19 additions and 8 deletions.
1 change: 1 addition & 0 deletions sql/mysql/Positive-Technologies/MySqlLexer.g4
Original file line number Diff line number Diff line change
Expand Up @@ -1079,6 +1079,7 @@ POWER: 'POWER';
QUOTE: 'QUOTE';
RADIANS: 'RADIANS';
RAND: 'RAND';
RANDOM: 'RANDOM';
RANDOM_BYTES: 'RANDOM_BYTES';
RELEASE_LOCK: 'RELEASE_LOCK';
REVERSE: 'REVERSE';
Expand Down
19 changes: 11 additions & 8 deletions sql/mysql/Positive-Technologies/MySqlParser.g4
Original file line number Diff line number Diff line change
Expand Up @@ -1588,7 +1588,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
;
Expand Down Expand Up @@ -1676,17 +1676,20 @@ userSpecification

userAuthOption
: userName IDENTIFIED BY PASSWORD hashed=STRING_LITERAL #hashAuthOption
| userName
IDENTIFIED BY STRING_LITERAL (RETAIN CURRENT PASSWORD)? #stringAuthOption
| userName
IDENTIFIED WITH
authenticationRule #moduleAuthOption
| userName IDENTIFIED BY RANDOM PASSWORD authOptionClause #randomAuthOption
| userName IDENTIFIED BY STRING_LITERAL authOptionClause #stringAuthOption
| userName IDENTIFIED WITH authenticationRule #moduleAuthOption
| 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 passwordFunctionClause #passwordModuleOption
;
Expand Down Expand Up @@ -2805,7 +2808,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
Expand Down
7 changes: 7 additions & 0 deletions sql/mysql/Positive-Technologies/examples/ddl_alter.sql
Original file line number Diff line number Diff line change
Expand Up @@ -103,4 +103,11 @@ alter definer = current_user sql security invoker view my_view4(c1, 1c, _, c1_2)
ALTER USER 'mattias.hultman' DEFAULT ROLE `prod-spain-mysql-read-only`@`%`;
rename user user1@100.200.1.1 to user2@100.200.1.2;
alter user 'user'@'%' IDENTIFIED BY 'newpassword' RETAIN CURRENT PASSWORD;
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

0 comments on commit b5e6106

Please sign in to comment.