Managing Users in the ArangoDB Shell

    Also note that the server and database access levels are represented as

    • : for Administrate
    • ro: for Access
    • none: for No accessThis is again for backward compatibility.

    Example

    Fire up arangosh and require the users module. Use it to create a new user:

    Creates a user called JohnSmith. This user will have no access at all.

    1. arangosh> users.grantDatabase('JohnSmith', 'testdb', 'rw');

    This grants the user Administrate access to the databasetestdb. revokeDatabase will revoke this access level setting.

    Note: Be aware that from 3.2 onwards the grantDatabase will notautomatically grant users the access level to write or read collections in adatabase. If you grant access to a database testdb you willadditionally need to explicitly grant access levels to individualcollections via grantCollection.

    The upgrade procedure from 3.1 to 3.2 sets the wildcard database accesslevel for all users to Administrate and sets the wildcard collectionaccess level for all user/database pairs to Read/Write.

    users.save(user, passwd, active, extra)

    This will create a new ArangoDB user. The user name must be specified in _user_and must not be empty.

    The password must be given as a string, too, but can be left empty ifrequired. If you pass the special value ARANGODB_DEFAULT_ROOT_PASSWORD, thepassword will be set the value stored in the environment variableARANGODB_DEFAULT_ROOT_PASSWORD. This can be used to pass an instancevariable into ArangoDB. For example, the instance identifier from Amazon.

    If the active attribute is not specified, it defaults to true. The _extra_attribute can be used to save custom data with the user.

    This method will fail if either the user name or the passwords are notspecified or given in a wrong format, or there already exists a user with thespecified name.

    Note: The user will not have permission to access any database. You needto grant the access rights for one or more databases usinggrantDatabase.

    Examples

    1. arangosh> require('@arangodb/users').save('my-user', 'my-secret-password');

    Show execution results

    1. {
    2. "user" : "my-user",
    3. "active" : true,
    4. "extra" : {
    5. },
    6. "code" : 201

    Hide execution results

    Grant Database

    users.grantDatabase(user, database, type)

    This grants type (‘rw’, ‘ro’ or ‘none’) access to the database forthe user. If database is "*", this sets the wildcard database accesslevel for the user user.

    The server access level follows from the access level for the database_system.

    Revoke Database

    users.revokeDatabase(user, database)

    This clears the access level setting to the database for the user andthe wildcard database access setting for this user kicks in. In case no wildcardaccess was defined the default is No Access. This will alsoclear the access levels for all the collections in this database.

    Grant Collection

    users.grantCollection(user, database, collection, type)

    This grants type (‘rw’, ‘ro’ or ‘none’) access level to the collection_in _database for the user. If collection is this sets thewildcard collection access level for the user user in databasedatabase.

    users.revokeCollection(user, database)

    This clears the access level setting to the collection collection for theuser user. The system will either fallback to the wildcard collection accesslevel or default to No Access

    Replace

    users.replace(user, passwd, active, extra)

    The username must be specified in user, and a user with the specified namemust already exist in the database.

    The password must be given as a string, too, but can be left empty if required.

    If the active attribute is not specified, it defaults to true. Theextra attribute can be used to save custom data with the user.

    This method will fail if either the user name or the passwords are not specifiedor given in a wrong format, or if the specified user cannot be found in thedatabase.

    Note: this function will not work from within the web interface

    Examples

    1. arangosh> require("@arangodb/users").replace("my-user", "my-changed-password");

    Show execution results

    1. {
    2. "user" : "my-user",
    3. "active" : true,
    4. "extra" : {
    5. },
    6. "code" : 200
    7. }

    Hide execution results

    Update

    users.update(user, passwd, active, extra)

    This will update an existing ArangoDB user with a new password and other data.

    The user name must be specified in user and the user must already exist inthe database.

    The password must be given as a string, too, but can be left empty if required.

    If the active attribute is not specified, the current value saved for theuser will not be changed. The same is true for the extra attribute.

    This method will fail if either the user name or the passwords are not specifiedor given in a wrong format, or if the specified user cannot be found in thedatabase.

    Examples

    Show execution results

    1. {
    2. "user" : "my-user",
    3. "active" : true,
    4. "extra" : {
    5. },
    6. "code" : 200
    7. }

    Hide execution results

    isValid

    users.isValid(user, password)

    Checks whether the given combination of user name and password is valid. Thefunction will return a boolean value if the combination of user name and passwordis valid.

    Each call to this function is penalized by the server sleeping a randomamount of time.

    Examples

    1. arangosh> require("@arangodb/users").isValid("my-user", "my-secret-password");

    Show execution results

    1. true

    Hide execution results

    users.remove(user)

    Removes an existing ArangoDB user from the database.

    The user name must be specified in User and the specified user must exist inthe database.

    Examples

    1. arangosh> require("@arangodb/users").remove("my-user");

    Show execution results

    1.  

    Hide execution results

    Document

    users.document(user)

    Fetches an existing ArangoDB user from the database.

    The user name must be specified in user.

    This method will fail if the user cannot be found in the database.

    Examples

    1. arangosh> require("@arangodb/users").document("my-user");

    Show execution results

    Hide execution results

    All

    users.all()

    Fetches all existing ArangoDB users from the database.

    Examples

    1. arangosh> require("@arangodb/users").all();

    Show execution results

    1. [
    2. {
    3. "user" : "tester",
    4. "active" : false,
    5. }
    6. },
    7. {
    8. "user" : "admin",
    9. "active" : true,
    10. "extra" : {
    11. }
    12. },
    13. {
    14. "user" : "root",
    15. "active" : true,
    16. "extra" : {
    17. }
    18. },
    19. {
    20. "user" : "my-user",
    21. "active" : true,
    22. "extra" : {
    23. }
    24. }
    25. ]

    Hide execution results

    Reload

    Reloads the user authentication data on the server

    All user authentication data is loaded by the server once on startup only and iscached after that. When users get added or deleted, a cache flush is doneautomatically, and this can be performed by a call to this method.

    Examples

    1. arangosh> require("@arangodb/users").reload();

    Show execution results

    1.  

    Hide execution results

    users.permission(user, database[, collection])

    Fetches the access level to the database or a collection.

    The user and database name must be specified, optionally you can specifythe collection name.

    This method will fail if the user cannot be found in the database.

    Examples

    1. arangosh> require("@arangodb/users").permission("my-user", "testdb");
    1. rw

    Hide execution results