diff --git a/doc/sql/query.ebnf b/doc/sql/query.ebnf
index cd02b46b6fb1654ffe8b0f194ea44ce5f1388f0a..309fef2cd2587babe3432d3c01b7817781f75b7a 100644
--- a/doc/sql/query.ebnf
+++ b/doc/sql/query.ebnf
@@ -22,7 +22,7 @@ body           ::= (insert | update | delete)
 create_role    ::= 'CREATE ROLE' role ('OPTION' '(' ('TIMEOUT' '=' double)')')?
 create_table   ::= 'CREATE TABLE' table '(' column (',' column)* ',' primary_key ')' ('USING' ('MEMTX' | 'VINYL'))? distribution ('OPTION' '(' ('TIMEOUT' '=' double)')')?
 create_user    ::= 'CREATE USER' user 'WITH'? 'PASSWORD' "'" password "'" ('USING' ('CHAP-SHA1' | 'LDAP' | 'MD5'))? ('OPTION' '(' ('TIMEOUT' '=' double)')')?
-alter_user     ::= 'ALTER USER' user 'WITH'? ('LOGIN' | 'NOLOGIN' | 'PASSWORD' "'" password "'" ('USING' ('CHAP-SHA1' | 'LDAP' | 'MD5'))?) ('OPTION' '(' ('TIMEOUT' '=' double)')')?
+alter_user     ::= 'ALTER USER' user 'WITH'? ('LOGIN' | 'NOLOGIN' | 'PASSWORD' "'" password "'" ('USING' ('CHAP-SHA1' | 'LDAP' | 'MD5'))? | 'RENAME TO' user) ('OPTION' '(' ('TIMEOUT' '=' double)')')?
 column         ::= name ('BOOL' | 'DECIMAL' | 'DOUBLE' | 'INT' | 'NUMBER' | 'SCALAR' | 'STRING' | 'TEXT' | 'UNSIGNED' | 'VARCHAR') (('NOT'?)  'NULL')?
 primary_key    ::= 'PRIMARY KEY' '(' name (',' name)* ')'
 distribution   ::= 'GLOBAL' | ('DISTRIBUTED BY' '(' name (',' name)*  ')')
diff --git a/sbroad-core/src/frontend/sql.rs b/sbroad-core/src/frontend/sql.rs
index e96d8c1ccb9aaf04dc9a9d4ea1f5e96dc755375d..771c0b1376e17b6f0bc4024d46b1851201c07316 100644
--- a/sbroad-core/src/frontend/sql.rs
+++ b/sbroad-core/src/frontend/sql.rs
@@ -2567,6 +2567,16 @@ impl AbstractSyntaxTree {
                                 auth_method,
                             }
                         }
+                        Rule::AlterRename => {
+                            let identifier_node_id = alter_option_node
+                                .children
+                                .first()
+                                .expect("Expected to see an identifier node under AlterRename");
+                            let identifier = parse_identifier(self, *identifier_node_id)?;
+                            AlterOption::Rename {
+                                new_name: identifier,
+                            }
+                        }
                         _ => {
                             return Err(SbroadError::Invalid(
                                 Entity::ParseNode,
diff --git a/sbroad-core/src/frontend/sql/query.pest b/sbroad-core/src/frontend/sql/query.pest
index c394039a908d8d7f8b6152cab1e19e25ceb0eef7..6ad8fb4555f237897c33f43ec8902a7afe22988e 100644
--- a/sbroad-core/src/frontend/sql/query.pest
+++ b/sbroad-core/src/frontend/sql/query.pest
@@ -15,10 +15,11 @@ ACL = _{ DropRole | DropUser | CreateRole | CreateUser | AlterUser | GrantPrivil
     AlterUser = {
         ^"alter" ~ ^"user" ~ Identifier ~ (^"with")? ~ AlterOption ~ TimeoutOption?
     }
-        AlterOption = _{ AlterLogin | AlterNoLogin | AlterPassword }
+        AlterOption = _{ AlterLogin | AlterNoLogin | AlterPassword | AlterRename }
             AlterLogin = { ^"login" }
             AlterNoLogin = { ^"nologin" }
             AlterPassword = { ^"password" ~ SingleQuotedString ~ AuthMethod? }
+            AlterRename = { ^"rename" ~ ^"to" ~ Identifier }
 	AuthMethod = { ^"using" ~ (ChapSha1 | Md5 | Ldap) }
             ChapSha1 = { ^"chap-sha1" }
             Md5 = { ^"md5" }
diff --git a/sbroad-core/src/ir/acl.rs b/sbroad-core/src/ir/acl.rs
index 1bfb77377ec332664af239e3388b5dac04a56a14..4d3d73e3e38c40356eb00c0e87465e16e56d0215 100644
--- a/sbroad-core/src/ir/acl.rs
+++ b/sbroad-core/src/ir/acl.rs
@@ -181,6 +181,9 @@ pub enum AlterOption {
         password: String,
         auth_method: String,
     },
+    Rename {
+        new_name: String,
+    },
 }
 
 #[derive(Clone, Debug, Deserialize, PartialEq, Eq, Serialize)]