Skip to main content

Start command

The start command starts a SurrealDB server in memory, on disk, or in a distributed setup.

BEFORE YOU START : Make sure you’ve installed SurrealDB — it should only take a second!

Command options

ArgumentsDescription

-b / --bind OPTIONAL

Sets the hostname or ip address to listen for connections on

-l / --log OPTIONAL

Sets the logging level for the database server

-u / --user OPTIONAL

Sets master username for the database

-p / --pass OPTIONAL

Sets master password for the database

--authOPTIONAL

Enables authentication for the database

-s / --strict OPTIONAL

Sets whether strict mode is enabled on this database instance

Positional argument

ArgumentsDescription
pathOPTIONAL

Sets the the database path used for storing data, can be one of:

  • memory
  • file:<path>
  • tikv:<addr>
  • file://<path>
  • tikv://<addr>

Example usage

To display the current command-line tool version, along with the platform and architecture, in a terminal run the surreal version.

surreal version

Strict mode

SurrealDB supports the ability to startup in strict mode. When running in strict mode, all NAMESPACE, DATABASE, and TABLE definitions will not be created automatically when data is inserted. Instead, if the selected namespace, database, or table has not been specifically defined, then the query will return an error.

surreal start --strict --log debug memory

Authentication

Authentication mode is not enabled by default in SurrealDB. When not enabled, any guest user is considered to have the same permissions as a root user with the OWNER role.

NOTE: It is strongly recommended to enable --auth mode when deploying SurrealDB in production. Not having it enabled can result in unauthorised access to your database.

surreal start --auth --user [ROOT_USER_NAME] --pass [ROOT_USER_PASSWORD]

Command help

To see the help information and usage instructions, in a terminal run the surreal start --help command without any further arguments. This command gives general information on the arguments, inputs, and additional options for the start command.

surreal start --help

The output of the above command :

Start the database server

USAGE:
surreal start [OPTIONS] [PATH]


ARGS:
[PATH] Database path used for storing data [env: SURREAL_PATH=] [default: memory]

OPTIONS:
-l, --log <LOG> The logging level for the database server
[env: SURREAL_LOG=] [default: info]
[possible values: none,full, error, warn, info, debug, trace]

--no-banner Whether to hide the startup banner [env: SURREAL_NO_BANNER=]

-h, --help Print help information

DATABASE:

--tick-interval <TICK_INTERVAL> The interval at which to run node agent tick (including garbage collection) [env: SURREAL_TICK_INTERVAL=][default: 10s]

-s, --strict Whether strict mode is enabled on this database instance [env: SURREAL_STRICT=]

--query-timeout <QUERY_TIMEOUT> The maximum duration that a set of statements can run for [env:SURREAL_QUERY_TIMEOUT=]

--transaction-timeout <TRANSACTION_TIMEOUT> The maximum duration that any single transaction can run for [env: SURREAL_TRANSACTION_TIMEOUT=]


AUTHENTICATION:
-u, --username <USERNAME> The username for the initial database root user. Only if no other root user exists [env:SURREAL_USER=] [aliases: user]

-p, --password <PASSWORD> The password for the initial database root user. Only if no other root user exists [env:SURREAL_PASS=] [aliases: pass]

--auth Whether to enable authentication [env: SURREAL_AUTH=]


DATASTORE CONNECTION:
--kvs-ca <KVS_CA> Path to the CA file used when connecting to the remote KV store [env: SURREAL_KVS_CA=]

--kvs-crt <KVS_CRT> Path to the certificate file used when connecting to the remote KV store [env:SURREAL_KVS_CRT=]

--kvs-key <KVS_KEY> Path to the private key file used when connecting to the remote KV store [env:SURREAL_KVS_KEY=]


HTTP SERVER:
--web-crt <WEB_CRT> Path to the certificate file for encrypted client connections [env: SURREAL_WEB_CRT=]

--web-key <WEB_KEY> Path to the private key file for encrypted client connections [env: SURREAL_WEB_KEY=]

--client-ip <CLIENT_IP> The method of detecting the client's IP address [env: SURREAL_CLIENT_IP=] [default:socket] [possible values: none, socket, CF-Connecting-IP, Fly-Client-IP,True-Client-IP, X-Real-IP, X-Forwarded-For]

-b, --bind <LISTEN_ADDRESSES> The hostname or ip address to listen for connections on [env: SURREAL_BIND=] [default:0.0.0.0:8000]


CAPABILITIES:
-A, --allow-all [<ALLOW_ALL>...] Allow all capabilities [env: SURREAL_CAPS_ALLOW_ALL=] [possible values:true, false]

--allow-scripting [<ALLOW_SCRIPTING>...] Allow execution of scripting functions [env: SURREAL_CAPS_ALLOW_SCRIPT=][possible values: true, false]

--allow-guests [<ALLOW_GUESTS>...] Allow guest users to execute queries [env: SURREAL_CAPS_ALLOW_GUESTS=][possible values: true, false]

--allow-funcs [<ALLOW_FUNCS>...] Allow execution of all functions. Optionally, you can provide a comma-separated list of function names to allow [env:SURREAL_CAPS_ALLOW_FUNC=]

--allow-net [<ALLOW_NET>...] Allow all outbound network access. Optionally, you can provide a comma-separated list of targets to allow [env: SURREAL_CAPS_ALLOW_NET=]

-D, --deny-all [<DENY_ALL>...] Deny all capabilities [env: SURREAL_CAPS_DENY_ALL=] [possible values:true, false]

--deny-scripting [<DENY_SCRIPTING>...] Deny execution of scripting functions [env: SURREAL_CAPS_DENY_SCRIPT=][possible values: true, false]

--deny-guests [<DENY_GUESTS>...] Deny guest users to execute queries [env: SURREAL_CAPS_DENY_GUESTS=][possible values: true, false]

--deny-funcs [<DENY_FUNCS>...] Deny execution of all functions. Optionally, you can provide a comma-separated list of function names to deny [env:SURREAL_CAPS_DENY_FUNC=]

--deny-net [<DENY_NET>...] Deny all outbound network access. Optionally, you can provide a comma-separated list of targets to deny [env: SURREAL_CAPS_DENY_NET=]