Query privileges reference Enterprise

This comprehensive reference provides detailed information about the privilege system in Memgraph, including which privileges are required for different types of queries and operations.

This page complements the Role-based access control documentation by providing detailed privilege requirements for specific queries and operations.

Memgraph’s privilege system controls access to various database operations through a comprehensive set of privileges. The system analyzes queries and determines the required privileges using the PrivilegeExtractor class, which implements the visitor pattern to traverse the Abstract Syntax Tree (AST) and extract privilege requirements.

Cypher query privileges

Basic operations

Query TypeRequired PrivilegesExample
CREATECREATECREATE (n:Person {name: "Alice"})
MATCHMATCHMATCH (n:Person) RETURN n
DELETEDELETEMATCH (n) DELETE n
MERGEMERGEMERGE (n:Person {id: 1})
SET (properties)SETMATCH (n) SET n.name = "Bob"
SET (labels)SETMATCH (n) SET n:Employee
REMOVE (properties)REMOVEMATCH (n) REMOVE n.temp
REMOVE (labels)REMOVEMATCH (n) REMOVE n:Temp

Complex queries

Query TypeRequired PrivilegesExample
MATCH + DELETEMATCH, DELETEMATCH (n) DELETE n
MATCH + CREATEMATCH, CREATEMATCH (n) CREATE (m)-[:KNOWS]->(n)
MATCH + SETMATCH, SETMATCH (n) SET n.updated = true
MATCH + REMOVEMATCH, REMOVEMATCH (n) REMOVE n:Old

Index operations

Query TypeRequired PrivilegesExample
CREATE INDEXINDEXCREATE INDEX ON :Person(name)
DROP INDEXINDEXDROP INDEX ON :Person(name)
CREATE EDGE INDEXINDEXCREATE EDGE INDEX ON :KNOWS
CREATE TEXT INDEXINDEXCREATE TEXT INDEX ON :Person(name)
CREATE VECTOR INDEXINDEXCREATE VECTOR INDEX ON :Document(embedding)
CREATE TEXT EDGE INDEXINDEXCREATE TEXT EDGE INDEX ON :KNOWS(description)
CREATE VECTOR EDGE INDEXINDEXCREATE VECTOR EDGE INDEX ON :SIMILAR(embedding)
ANALYZE GRAPHINDEXANALYZE GRAPH
DROP ALL INDEXESINDEXDROP ALL INDEXES

Constraint operations

Query TypeRequired PrivilegesExample
CREATE CONSTRAINTCONSTRAINTCREATE CONSTRAINT ON (n:Person) ASSERT n.id IS UNIQUE
DROP CONSTRAINTCONSTRAINTDROP CONSTRAINT ON (n:Person) ASSERT n.id IS UNIQUE
DROP ALL CONSTRAINTSCONSTRAINTDROP ALL CONSTRAINTS

Authentication and authorization

Query TypeRequired PrivilegesSpecial Cases
CREATE ROLEAUTH
DROP ROLEAUTH
SHOW ROLESAUTH
CREATE USERAUTH
SET PASSWORDAUTH
CHANGE PASSWORDNoneUsers can change their own password.
DROP USERAUTH
SHOW CURRENT USERNoneUsers can always see their own info.
SHOW CURRENT ROLENoneUsers can always see their current role.
SHOW USERSAUTH
SET ROLEAUTH
CLEAR ROLEAUTH
GRANT PRIVILEGEAUTH
DENY PRIVILEGEAUTH
REVOKE PRIVILEGEAUTH
SHOW PRIVILEGESAUTH
SHOW ROLE FOR USERAUTH
SHOW USERS FOR ROLEAUTH
GRANT DATABASE TO USERAUTH
DENY DATABASE FROM USERAUTH
REVOKE DATABASE FROM USERAUTH
SHOW DATABASE PRIVILEGESAUTH
SET MAIN DATABASEAUTH
GRANT IMPERSONATE USERAUTH
DENY IMPERSONATE USERAUTH

Database information queries

Query TypeRequired PrivilegesExample
SHOW INDEX INFOINDEXSHOW INDEX INFO
SHOW EDGE TYPESINDEXSHOW EDGE_TYPES INFO
SHOW NODE LABELSINDEXSHOW NODE_LABELS INFO
SHOW VECTOR INDEX INFOINDEXSHOW VECTOR INDEX INFO
SHOW CONSTRAINT INFOCONSTRAINTSHOW CONSTRAINT INFO
SHOW METRICSSTATSSHOW METRICS INFO

System information queries

Query TypeRequired PrivilegesExample
SHOW STORAGE INFOSTATSSHOW STORAGE INFO
SHOW BUILD INFOSTATSSHOW BUILD INFO
SHOW ACTIVE USERSSTATSSHOW ACTIVE USERS
SHOW LICENSE INFOCONFIGSHOW LICENSE INFO
SHOW INSTANCESTATSSHOW INSTANCE
SHOW INSTANCESSTATSSHOW INSTANCES

Administrative operations

Query TypeRequired PrivilegesExample
DUMP DATABASEDUMPDUMP DATABASE
LOCK DATA DIRECTORYDURABILITYLOCK DATA DIRECTORY
UNLOCK DATA DIRECTORYDURABILITYUNLOCK DATA DIRECTORY
DATA DIRECTORY LOCK STATUSDURABILITYDATA DIRECTORY LOCK STATUS
FREE MEMORYFREE_MEMORYFREE MEMORY
SHOW CONFIGCONFIGSHOW CONFIG
CREATE TRIGGERTRIGGERCREATE TRIGGER ...
DROP TRIGGERTRIGGERDROP TRIGGER ...
SHOW TRIGGERSTRIGGERSHOW TRIGGERS
SHOW TRIGGER INFOTRIGGERSHOW TRIGGER INFO
CREATE STREAMSTREAMCREATE STREAM ...
DROP STREAMSTREAMDROP STREAM ...
SET ISOLATION LEVELCONFIGSET ISOLATION LEVEL ...
SET STORAGE MODESTORAGE_MODESET STORAGE MODE ...
CREATE SNAPSHOTDURABILITYCREATE SNAPSHOT
RECOVER SNAPSHOTDURABILITYRECOVER SNAPSHOT
SHOW SNAPSHOTSDURABILITYSHOW SNAPSHOTS
SHOW NEXT SNAPSHOTDURABILITYSHOW NEXT SNAPSHOT
SET SETTINGCONFIGSET SETTING ...
SHOW VERSIONSTATSSHOW VERSION
SHOW TRANSACTIONSTRANSACTION_MANAGEMENTSHOW TRANSACTIONS
TERMINATE TRANSACTIONSTRANSACTION_MANAGEMENTTERMINATE TRANSACTIONS 'transaction_id'

Replication operations

Query TypeRequired PrivilegesExample
REPLICATION operationsREPLICATIONVarious replication commands.
SHOW REPLICATION ROLEREPLICATIONSHOW REPLICATION ROLE
SHOW REPLICASREPLICATIONSHOW REPLICAS
SHOW REPLICATION LAGCOORDINATORSHOW REPLICATION LAG

Multi-database operations

Query TypeRequired PrivilegesSpecial Cases
CREATE DATABASEMULTI_DATABASE_EDIT
DROP DATABASEMULTI_DATABASE_EDIT
RENAME DATABASEMULTI_DATABASE_EDIT
DROP DATABASE FORCEMULTI_DATABASE_EDIT, TRANSACTION_MANAGEMENTRequires both privileges.
USE DATABASEMULTI_DATABASE_USE
SHOW DATABASENoneUsers can see current database.
SHOW DATABASESMULTI_DATABASE_USE

Enum operations

Query TypeRequired PrivilegesExample
CREATE ENUMCREATECREATE ENUM ...
SHOW ENUMSSTATSSHOW ENUMS
ALTER ENUM ADD VALUECREATEALTER ENUM ... ADD VALUE ...
ALTER ENUM UPDATE VALUECREATEALTER ENUM ... UPDATE VALUE ...
ALTER ENUM REMOVE VALUEDELETEALTER ENUM ... REMOVE VALUE ...
DROP ENUMDELETEDROP ENUM ...

TTL operations

Query TypeRequired PrivilegesNote
TTL operationsCONFIG, INDEX, MATCH, DELETERequires multiple privileges.

Coordinator operations

Query TypeRequired PrivilegesExample
COORDINATOR operationsCOORDINATORVarious coordinator commands.
SHOW COORDINATOR SETTINGSCOORDINATORSHOW COORDINATOR SETTINGS

Schema information

Query TypeRequired PrivilegesExample
SHOW SCHEMA INFOSTATSSHOW SCHEMA INFO

User profile operations

Query TypeRequired PrivilegesExample
USER PROFILE operationsPROFILE_RESTRICTIONUser profile management.

Procedure calls

Procedure TypeRequired PrivilegesExample
mg.get_module_filesMODULE_READCALL mg.get_module_files()
mg.create_module_fileMODULE_WRITECALL mg.create_module_file(...)
mg.update_module_fileMODULE_WRITECALL mg.update_module_file(...)
mg.get_module_fileMODULE_READCALL mg.get_module_file(...)
mg.delete_module_fileMODULE_WRITECALL mg.delete_module_file(...)
Other proceduresProcedure-specificDepends on procedure definition.

File operations

Query TypeRequired PrivilegesExample
LOAD CSVREAD_FILELOAD CSV FROM "file.csv" AS row

Special cases

Query TypeRequired PrivilegesNotes
EXPLAINInherits privileges from inner queryPrivileges depend on the explained query.
PROFILEInherits privileges from inner queryPrivileges depend on the profiled query.
SET SESSION TRACENoneNo privileges required.

Examples

-- EXPLAIN inherits privileges from the inner query
EXPLAIN MATCH (n:Person) RETURN n;  -- Requires MATCH privilege
 
-- PROFILE inherits privileges from the inner query
PROFILE CREATE (n:Person {name: "Alice"});  -- Requires CREATE privilege

Troubleshooting

Common privilege errors

⚠️

If you encounter “Vertex not created due to not having enough permission!” errors, you likely need to grant fine-grained access control privileges to the user.

Checking privileges

-- Show all privileges for a user or role
SHOW PRIVILEGES FOR username;
 
-- Show privileges in specific database context
SHOW PRIVILEGES FOR username ON DATABASE db_name;
 
-- Verify the current logged-in user
SHOW CURRENT USER;
 
-- Show current user's privileges
SHOW PRIVILEGES FOR CURRENT USER;

Privilege inheritance

Remember that:

  • Grants: If any role grants a permission, the user has that permission
  • Denies: If any role denies a permission, the user is denied that permission
  • Database Access: If any role grants access to a database, the user has access
  • Fine-grained Permissions: Combined using the same grant/deny logic

Privilege changes take effect after the user reconnects to the database.