diff --git a/src/luamod.lua b/src/luamod.lua
index 412ed65ed5f70af978c8117a6dea4654c205547e..705369daee52d0313a52cb13fab948a6374eca55 100644
--- a/src/luamod.lua
+++ b/src/luamod.lua
@@ -844,8 +844,8 @@ function pico.grant_privilege(grantee, privilege, object_type, object_name, opts
             kind = 'acl',
             op_kind = 'grant_privilege',
             priv_def = {
-                grantee_id = grantee_def.id,
                 grantor_id = box.session.uid(),
+                grantee_id = grantee_def.id,
                 object_type = object_type,
                 object_name = object_name,
                 privilege = privilege,
diff --git a/src/schema.rs b/src/schema.rs
index 8c5326c488b2a92fc3fbb82b4456a2dd24e8c12b..33144dd5d7701de2f28c8f40cfa492711f938725 100644
--- a/src/schema.rs
+++ b/src/schema.rs
@@ -236,8 +236,8 @@ pub struct PrivilegeDef {
     ///
     /// In tarantool users and roles are stored in the same space, which means a
     /// role and a user cannot have the same id or name.
-    pub grantee_id: UserId,
     pub grantor_id: UserId,
+    pub grantee_id: UserId,
     pub object_type: String,
     pub object_name: String,
     pub privilege: String,
diff --git a/src/storage.rs b/src/storage.rs
index 71764fa4e558e508069fd52669532800599d06af..69a737bed665789da2aea9c82f0aa9c9486b929e 100644
--- a/src/storage.rs
+++ b/src/storage.rs
@@ -2220,8 +2220,8 @@ impl Privileges {
             .id(Self::SPACE_ID)
             .is_local(true)
             .is_temporary(false)
-            .field(("grantee_id", FieldType::Unsigned))
             .field(("grantor_id", FieldType::Unsigned))
+            .field(("grantee_id", FieldType::Unsigned))
             .field(("object_type", FieldType::String))
             .field(("object_name", FieldType::String))
             .field(("privilege", FieldType::String))
diff --git a/src/traft/op.rs b/src/traft/op.rs
index df89e24b9f2954e21aee10034dc666f74741b250..f5a3e33e2d90e2754c74196e06f422994bd37c1e 100644
--- a/src/traft/op.rs
+++ b/src/traft/op.rs
@@ -159,7 +159,7 @@ impl std::fmt::Display for Op {
                     schema_version,
                     ..
                 } = priv_def;
-                write!(f, "GrantPrivilege({schema_version}, {grantee_id}, {grantor_id}, {object_type}, {object_name}, {privilege})")
+                write!(f, "GrantPrivilege({schema_version}, {grantor_id}, {grantee_id}, {object_type}, {object_name}, {privilege})")
             }
             Self::Acl(Acl::RevokePrivilege { priv_def }) => {
                 let PrivilegeDef {
@@ -171,7 +171,7 @@ impl std::fmt::Display for Op {
                     schema_version,
                     ..
                 } = priv_def;
-                write!(f, "RevokePrivilege({schema_version}, {grantee_id}, {grantor_id}, {object_type}, {object_name}, {privilege})")
+                write!(f, "RevokePrivilege({schema_version}, {grantor_id}, {grantee_id}, {object_type}, {object_name}, {privilege})")
             }
         };
 
diff --git a/test/int/test_acl.py b/test/int/test_acl.py
index 74c643959f99d6751e3bf8d2d212ffd8d6447d7f..2264a5baf8bf296537f36671269401db09b0b6bd 100644
--- a/test/int/test_acl.py
+++ b/test/int/test_acl.py
@@ -196,7 +196,7 @@ def test_acl_lua_api(cluster: Cluster):
         "box.space._pico_privilege:get", (dave_id, "space", "_pico_property", "read")
     )
 
-    assert priv[1] == 0  # The above grant was executed from guest. 0 is guest user id.
+    assert priv[0] == 0  # The above grant was executed from guest. 0 is guest user id.
 
     # Already granted -> ok.
     i1.call(