The simplest way to configure server behavior is to provide a config file with the --config flag, usually called config.yaml. Here is a complete config.yaml file populated with all the default values for every key.
Level of logging provided. Options are: trace, debug, info, warning, error, and fatal.
Default: info
Values:
Possible values from most logging to least. Each log level logs everything below it plus the values at the listed level.
trace: Logs server messages including MySQL wire protocol messages. Useful for debugging client/server communication issues.
debug: Logs all queries, results, and latencies. Useful when trying to debug bad query behavior like what query is causing an error. Note, SQL queries often contain sensitive data so this log level is not recommended for production use.
info: Logs informational messages but not queries. This log level is recommended for production deployments.
warning: Logs warnings.
error: Logs all errors.
fatal: Logs fatal errors.
Example:
In this example, I set the log level to info and run a bad query. Then, I restart the server with debug log level an re-run the same bad query.
$greplog_levelconfig.yamllog_level:info$doltsql-server--config=config.yamlStartingserverwithConfigHP="localhost:3310"|T="28800000"|R="false"|L="info"|S="/tmp/mysql.sock"WARN[0000]unixsocketsetupfailed:filealreadyinuse:/tmp/mysql.sockINFO[0000]Serverready.Acceptingconnections.WARN[0000]secure_file_privissetto"",whichisinsecure.WARN[0000]AnyuserwithGRANTFILEprivilegeswillbeabletoreadanyfilewhichthesql-serverprocesscanread.WARN[0000]Pleaseconsiderrestartingtheserverwithsecure_file_privsettoasafe (or non-existent) directory. INFO[0009]NewConnectionDisableClientMultiStatements=falseconnectionID=1WARN[0009]errorrunningqueryconnectTime="2024-12-04 13:22:52.439832 -0800 PST m=+9.896056876"connectionDb=config_blogconnectionID=1error="column \"bad_col\" could not be found in any table in scope"
As you can see, I get the error but not the query that caused the error. Now, I stop the server using Ctrl-C and edit my config.yaml using emacs, raising the log level to debug. I restart the server and re-run the bad query in a connected client.
$emacsconfig.yaml$greplog_levelconfig.yamllog_level:debug$doltsql-server--config=config.yamlStartingserverwithConfigHP="localhost:3310"|T="28800000"|R="false"|L="debug"|S="/tmp/mysql.sock"DEBU[0000]LoadingeventsWARN[0000]unixsocketsetupfailed:filealreadyinuse:/tmp/mysql.sockINFO[0000]Serverready.Acceptingconnections.WARN[0000]secure_file_privissetto"",whichisinsecure.WARN[0000]AnyuserwithGRANTFILEprivilegeswillbeabletoreadanyfilewhichthesql-serverprocesscanread.WARN[0000]Pleaseconsiderrestartingtheserverwithsecure_file_privsettoasafe (or non-existent) directory. INFO[0006]NewConnectionDisableClientMultiStatements=falseconnectionID=1DEBU[0006]StartingqueryconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionID=1query="select @@version_comment limit 1"DEBU[0006]Queryfinishedin0msconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionID=1query="select @@version_comment limit 1"DEBU[0011]StartingqueryconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionID=1query="SELECT DATABASE()"DEBU[0011]Queryfinishedin0msconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionID=1query="SELECT DATABASE()"DEBU[0011]StartingqueryconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionDb=config_blogconnectionID=1query="show databases"DEBU[0011]Queryfinishedin0msconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionDb=config_blogconnectionID=1query="show databases"DEBU[0011]StartingqueryconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionDb=config_blogconnectionID=1query="show tables"DEBU[0011]Queryfinishedin0msconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionDb=config_blogconnectionID=1query="show tables"DEBU[0011]StartingqueryconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionDb=config_blogconnectionID=1query="SELECT * FROM `t` LIMIT 0;"DEBU[0011]Queryfinishedin0msconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionDb=config_blogconnectionID=1query="SELECT * FROM `t` LIMIT 0;"DEBU[0019]StartingqueryconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionDb=config_blogconnectionID=1query="select * from t where bad_col=3"WARN[0019]errorrunningqueryconnectTime="2024-12-04 13:25:18.756126 -0800 PST m=+6.422378084"connectionDb=config_blogconnectionID=1error="column \"bad_col\" could not be found in any table in scope"query="select * from t where bad_col=3"
I now see the bad query being run is select * from t where bad_col=3.
behavior
The behavior section of config.yaml defines configuration that determines the way the SQL engine works.
read_only
This configuration value is used to turn your SQL server into read only mode, preventing any write queries from succeeding and logging an error.
I make an insert in a connected client and it succeeds.
MySQL [config_blog]>insert into t values (0, 'first');Query OK, 1row affected (0.006 sec)
Now, I stop the above server using Ctrl-C and modify the config.yaml by setting read_only to true. Then, I restart the server using the new config.yaml.
$emacsconfig.yaml$grepread_onlyconfig.yamlread_only:trueread_only:null$doltsql-server--config=config.yamlStartingserverwithConfigHP="localhost:3310"|T="28800000"|R="true"|L="info"|S="/tmp/mysql.sock"WARN[0000]unixsocketsetupfailed:filealreadyinuse:/tmp/mysql.sockINFO[0000]Serverready.Acceptingconnections.WARN[0000]secure_file_privissetto"",whichisinsecure.WARN[0000]AnyuserwithGRANTFILEprivilegeswillbeabletoreadanyfilewhichthesql-serverprocesscanread.WARN[0000]Pleaseconsiderrestartingtheserverwithsecure_file_privsettoasafe (or non-existent) directory. INFO[0016]NewConnectionDisableClientMultiStatements=falseconnectionID=1WARN[0016]errorrunningqueryconnectTime="2024-12-04 14:38:05.684674 -0800 PST m=+16.751230334"connectionDb=config_blogconnectionID=1error="database server is set to read only mode"
As expected, you can see the query failed with a "database server is set to read only mode". In the client, I also received the same error.
MySQL [config_blog]>insert into t values (1, 'second');ERROR 1105 (HY000): databaseserverissettoread only mode
autocommit
autocommit is a standard SQL database setting where every SQL statement triggers a transaction COMMIT. Without autocommit, the user is responsible for managing their own concurrency by issuing BEGIN statements at the start of transactions and COMMIT or ROLLBACK statements at the end of transactions. Most databases (ie. MySQL, Postgres) and clients (ie. ODBC, JDBC) have autocommit on by default with the notable exception of the Python client.
Now I reconnect both clients. I should see this table in both clients:
MySQL [config_blog]>select*from t;+----+--------+| id | words |+----+--------+| 0 | first || 1 | second |+----+--------+2rowsinset (0.004 sec)
In client one I make an insert:
MySQL [config_blog]>insert into t values (2, 'third');Query OK, 1row affected (0.005 sec)
But that insert is not visible in client two:
MySQL [config_blog]>select*from t;+----+--------+| id | words |+----+--------+| 0 | first || 1 | second |+----+--------+2rowsinset (0.001 sec)
I must issue a commit in client one:
MySQL [config_blog]>commit;Query OK, 0rows affected (0.007 sec)
and a begin in client two. Now I see the insert in client two.
MySQL [config_blog]>begin;Query OK, 0rows affected (0.000 sec)MySQL [config_blog]>select*from t;+----+--------+| id | words |+----+--------+| 0 | first || 1 | second || 2 | third |+----+--------+3rowsinset (0.001 sec)
disable_client_multi_statements
By default, the Dolt SQL server can accept and process multiple SQL queries in a single statement. The default delimiter is a semicolon (ie. ;). So, you can send multiple SQL queries in the same statement as long as they are separated by a semicolon and by default Dolt will process each individually and return the results. However, some clients are not able to handle multiple result sets from a single statement. So, Dolt offers a configuration value to fail statements that contain multiple SQL queries.
Default: false
Values: true, false
Example:
In order to get the standard MySQL client to send multi-statement queries to a server, I must change the delimiter to something other than ;. The client parses queries at the defined delimiter and sends them individually. So, I start by changing the delimiter on my client to ?.
MySQL [config_blog]> delimiter '?';
Now, I issue a multi-statement query and it succeeds.
MySQL [config_blog]>insert into t values (3, 'fourth'); update t set words='first modified'where id=0?Query OK, 1row affected (0.012 sec)Query OK, 1row affected (0.012 sec)Rowsmatched: 1 Changed: 1 Warnings: 0
I stop the server using Ctrl-C. Now, I set the disable_client_multi_statement to true and restart the server:
MySQL [config_blog]>deletefrom t where id=3; update t set words='first'where id=0?ERROR 1105 (HY000): syntax error at position 33 near 'update'
dolt_transaction_commit
Dolt offers a setting where every transaction commit also becomes a Dolt commit. That setting can be controlled using dolt_transaction_commit in config.yaml. By default, Dolt commits are user controlled and triggered via the dolt_commit() procedure. In some cases, like when you have an existing application that is built against standard MySQL, you may want Dolt commits generated automatically. This setting enables that behavior.
If true all SQL transaction commits will automatically create a Dolt commit, with a generated commit message. This is useful when a system working with Dolt wants to create versioned data, but doesn't want to directly use Dolt features such as dolt_commit()
Default: false
Values: true, false
Example:
Without dolt_transaction_commit enabled, I must issue a call to the dolt_commit() procedure to get a new entry in the log.
Note, I lose control of the commit message in this mode. The commit is made by the server user, in this case configblog, in contrast to manual commits which are made by the client user root.
event_scheduler
Dolt supports MySQL events. Events are scheduled jobs created using the CREATE EVENT SQL statement. Event scheduling is on by default but can be disabled using this configuration setting. Note, only events on the main branch will be executed by the event scheduler. Events can be used to schedule Dolt commits at intervals if you don't have access to the application code for your application, but also don't want a commit at every SQL transaction.
Default: "ON"
Values: "ON", "OFF"
Example:
I start the Dolt SQL server in debug mode so we can see event execution in the logs. I create an event to create a Dolt commit every minute. Notice the --allow-empty flag. This allows Dolt to commit without error even when nothing has changed in the database.
[config_blog]>CREATEEVENT make_dolt_commits ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1MINUTE DO CALL dolt_commit('-A', '--allow-empty', '-m', 'Commit created using an event');Query OK, 0rows affected (0.011 sec)
Now, we wait a minute and in the logs we see that the event has fired, as expected.
DEBU[0090]Executingeventconfig_blog.make_dolt_commits,secondsuntilexecution:-28.759227DEBU[0090]executingeventconfig_blog.make_dolt_commitsquery="CALL dolt_commit('-A', '--allow-empty', '-m', 'Commit created using an event')"
We can inspect the Dolt log and see indeed the commit succeeded.
$mysql-h127.0.0.1-P3310-uuserWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.WelcometotheMariaDBmonitor.Commandsendwith ; or \g.YourMySQLconnectionidis3Serverversion:8.0.33DoltCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.
Note, I can no longer log in using the user named root.
$mysql-h127.0.0.1-P3310-urootWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.ERROR2027 (HY000): Received malformed packet
password
The password of the default user for the server to accept connections from.
$mysql-h127.0.0.1-P3310-uuserWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.ERROR1045 (28000): Access denied for user 'user'
In order to connect to a server with a plain text password, I must pass the --skip-ssl option to the MySQL client. I can connect using 127.0.0.1 or localhost.
$mysql-h127.0.0.1-P3310-uroot--skip-sslWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.WelcometotheMariaDBmonitor.Commandsendwith ; or \g.YourMySQLconnectionidis1Serverversion:8.0.33DoltCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MySQL [(none)]>
listener
The listener section of config.yaml is configuration for the SQL server transport layer.
host
The host defines the address of the server that Dolt is running on.
You notice the starting server message now says 127.0.0.1 instead of localhost.
port
The port on the server used to accept connections. The default is 3306. Be careful because that is also the MySQL and MariaDB default port so you either need to stop your MySQL server to run Dolt, or change the Dolt port to something else.
Astute readers may have noticed I've been running this example on port 3310 the whole time. I'm using port 3306 for my long-running Wikipedia import. I have this port configured in muy config.yaml. The second and third port settings are for a Remote API and a metrics endpoint which are not covered in this article.
$mysql-h127.0.0.1-P3310-urootWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.WelcometotheMariaDBmonitor.Commandsendwith ; or \g.YourMySQLconnectionidis1Serverversion:8.0.33DoltCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MySQL [(none)]>
$mysql-h127.0.0.1-P3310-urootWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.WelcometotheMariaDBmonitor.Commandsendwith ; or \g.YourMySQLconnectionidis2Serverversion:8.0.33DoltCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MySQL [(none)]>
read_timeout_millis
This setting controls when the server will time out a connection where no packets are sent. The value is defined in milliseconds. If the server does not read a packet from the connected client for the listed number of milliseconds a timeout error is returned and the connection is killed. The option is equivalent to net_read_timeout in MySQL. Most MySQL clients send keep alive packets to avoid this timeout. Use this to control bad client connections.
Now, I'll issue a select sleep(5) in a client which occupies the client so it does not send packets.
$mysql-h127.0.0.1-P3310-urootWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.WelcometotheMariaDBmonitor.Commandsendwith ; or \g.YourMySQLconnectionidis5Serverversion:8.0.33Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MySQL [(none)]>select sleep(5);ERROR2006 (HY000): Server has gone awayNoconnection.Tryingtoreconnect...Connectionid:1Currentdatabase:***NONE***ERROR1105 (HY000): row read wait bigger than connection timeout
The query fails and the connection is killed.
write_timeout_millis
This setting controls when the server will time out a connection where it cannot send packets. The value is defined in milliseconds. If the server does not write a packet to the connected client for the listed number of milliseconds a timeout error is returned and the connection is killed. The option is equivalent to net_write_timeout in MySQL. Use this to control bad client connections.
The number of milliseconds that the server will wait for a write operation
Default: 28800000
Values: Any integer between 1 and the max 64-bit integer (9,223,372,036,854,775,807).
Example:
We were a bit confused how to trigger this timeout and could only do it within Dolt code. Practically, we think this type of timeout is triggered very rarely in the wild.
tls_key
tls_key, tls_cert, and require_secure_transport as used together and are covered in this article. tls_key is the path to the key file to use for secure transport.
tls_key, tls_cert, and require_secure_transport as used together and are covered in this article. tls_cert is the path to the ket file to use for secure transport.
The path to the TLS certificate used for secure transport
Default: null
Values: A path on your filesystem to a .pem file.
require_secure_transport
tls_key, tls_cert, and require_secure_transport as used together and are covered in this article. Setting require_secure_transport enables TLS using the listed tls_key and tls_cert files.
Dolt source code comes with a signed key and cert .pem file. Set the following variables in your config.yaml. I have my Dolt source code stored at ~/dolthub/git/dolt/.
Now I connect and run status and I can see I am on a SSL connection.
$mysql-h127.0.0.1-P3310-urootWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.WelcometotheMariaDBmonitor.Commandsendwith ; or \g.YourMySQLconnectionidis1Serverversion:8.0.33DoltCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MySQL [(none)]> sourceERROR:Usage: \. <filename>|source<filename>MySQL [(none)]> status--------------mysqlfrom11.6.2-MariaDB,client15.2forosx10.20 (arm64) using EditLine wrapperConnectionid:1Currentdatabase:Currentuser:root@%SSL:CipherinuseisTLS_AES_128_GCM_SHA256,certisUNKNOWNCurrentpager:stdoutUsingoutfile:''Usingdelimiter: ;Server:MySQLServerversion:8.0.33DoltProtocolversion:10Connection:127.0.0.1viaTCP/IPServercharacterset:utf8mb4Dbcharacterset:utf8mb4Clientcharacterset:utf8mb4Conn.characterset:utf8mb4TCPport:3310--------------
allow_cleartext_passwords
This is a bit of an advanced option. allow_cleartext_passwords only affects the mysql_clear_password auth plugin, which is only used for JSON Web Token (JWT) authentication. Other auth plugins protect the password (e.g. mysql_native_password does a hash scramble, caching_sha2_password requires an encrypted connection), but mysql_clear_password sends the plaintext password over the wire. If you are using JWT authentication you must enable allow_cleartext_passwords or require_secure_transport.
Default: false
Values: true, false, or null
max_logged_query_len
max_logged_query_len sets the maximum amount of characters Dolt will log in the server logs. We had an issue where very long queries, like seen in dumps would overflow buffers in some log monitoring utilities. This setting allows the user to truncate log lines at a maximum length to avoid such failure modes. This only effects queries so you must also set the log level to debug or above to see an effect.
The data_dir, config_dir, privilege_file and branch_control_file work in conjunction to tell Dolt where to create and load various artifacts needed for the running of the database. data dir defaults to the current working directory. data_dir configures the root directory and is used by config_dir, privilege_file and branch_control_file.
A directory where the server will load dolt databases to serve, and create new ones. Defaults to the current directory.
Default: .
Values: Any filesystem path
config_dir
config_dir is a directory where Dolt will load and store configuration used by the database. Configuration includes the privilege_file and branch_control_file used to store users/grants and branch permissions configuration respectively. This defaults to the $data_dir/doltcfg directory.
Path to a file to load and store branch control permissions. Defaults to $doltcfg-dir/branch_control.db. Will be created as needed.
Default: .doltcfg/branch_control.db
Values: Any filesystem path
Example:
data_dir, config_dir, privilege_file and branch_control_file can all be set to independent filesystem locations but we recommend only using data_dir to change the location of your database storage. It is common to have data stored on a different mounted drive than where the server binary or logs are stored.
This is a new directory so there are no databases in it.
$mysql-h127.0.0.1-P3310-urootWARNING:option--ssl-verify-server-certisdisabled,becauseofaninsecurepasswordlesslogin.WelcometotheMariaDBmonitor.Commandsendwith ; or \g.YourMySQLconnectionidis1Serverversion:8.0.33DoltCopyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.Type'help;'or'\h'forhelp.Type'\c'toclearthecurrentinputstatement.MySQL [(none)]> show databases;+--------------------+|Database|+--------------------+|information_schema||mysql|+--------------------+2rowsinset (0.000 sec)
After we create a database named tmp:
MySQL [(none)]>createdatabase tmp;Query OK, 1row affected (0.135 sec)
The host defines the host Dolt will use to serve the metrics endpoint.
Default: null
Values: localhost or an IPv4 or IPv6 address
port
The port defines the port Dolt will use to expose the metrics endpoint.
Default: -1
Values: Any integer between 1024 to 49151
Example:
host and port must be defined together to enable a metrics endpoint. In this example, I define host as localhost and port as 11111 in config.yaml and start a server.
Then, I can access the metrics by making an HTTP request to http://localhost:11111/metrics
$curlhttp://localhost:11111/metrics|HEAD-n10%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed100604106041004776k0--:--:----:--:----:--:--5899k# HELP dss_concurrent_connections Number of clients concurrently connected to this instance of dolt sql server# TYPE dss_concurrent_connections gaugedss_concurrent_connections0# HELP dss_concurrent_queries Number of queries concurrently being run on this instance of dolt sql server# TYPE dss_concurrent_queries gaugedss_concurrent_queries0# HELP dss_connects Count of server connects# TYPE dss_connects counterdss_connects0# HELP dss_disconnects Count of server disconnects
For more information on how to scrape the metrics from this endpoint consult our metrics documentation.
labels
Labels can be added to any Dolt metrics emitted using this optional configuration setting. This is often used to differentiate metrics coming from multiple sources to a single Prometheus collector. The label map will be applied to every metric Dolt emits.
Default: {}
Values: A map of the form {"label": "value"}
Example:
I add the {"process": "dolt-sql-server"} label value in config.yaml and start a Dolt SQL Server.
Now all the metrics emitted are labeled with process="dolt-sql-server".
$curlhttp://localhost:11111/metrics|HEAD-n10%Total%Received%XferdAverageSpeedTimeTimeTimeCurrentDloadUploadTotalSpentLeftSpeed100642506425003115k0--:--:----:--:----:--:--3137k# HELP dss_concurrent_connections Number of clients concurrently connected to this instance of dolt sql server# TYPE dss_concurrent_connections gaugedss_concurrent_connections{process="dolt-sql-server"}0# HELP dss_concurrent_queries Number of queries concurrently being run on this instance of dolt sql server# TYPE dss_concurrent_queries gaugedss_concurrent_queries{process="dolt-sql-server"}0# HELP dss_connects Count of server connects# TYPE dss_connects counterdss_connects{process="dolt-sql-server"}0# HELP dss_disconnects Count of server disconnects
remotesapi
A running Dolt SQL server can serve as a Dolt remote by enabling these configuration values. With a remote endpoint enabled, you can clone, push, pull, and fetch from a running Dolt SQL Server by connecting with a user with the appropriate permissions. Additional documentation on how to push can be found in this blog article where we announced push support.
In another shell, I can now clone the database by specifying the DOLT_REMOTE_PASSWORD environment variable and a --user. Note, cloning from DoltHub or DoltLab uses a different authentication method and thus, does not require a user or password.
I now have a cloned copy of the database in the location I cloned to.
read_only
If a Dolt remote endpoint is enabled by setting a valid port, the endpoint can be made read only by setting read_only to true. The endpoint will accept clone, pull, and fetch requests but not push requests.
Default: null
Values: null, true, or false
Example:
I now set the read_only configuration value to true and start the Dolt SQL server.
If I make a change and attempt to push it will fail.
$doltsql-q"insert into t values (6, 'Can I push this');dquote> "QueryOK,1rowaffected (0.00 sec)$doltsql-q"select * from t;"+----+-----------------+|id|words|+----+-----------------+|0|firstmodified||1|second||2|third||3|fourth||4|doltcommit||6|CanIpushthis|+----+-----------------+$doltcommit-am"Added row to push"commit0vkmfbrt3d1uljrh0ie0mdikoc9tcsss (HEAD ->main) Author:timsehn<tim@dolthub.com>Date:WedDec1114:07:35-08002024Addedrowtopush$DOLT_REMOTE_PASSWORD=doltpush--userrootoriginmain-Uploading...unknownpusherror; rpcerror:code=PermissionDenieddesc=thisserveronlyprovidesread-onlyaccess
If instead of setting system variables globally, you would rather set them for individual users, Dolt supports a user_session_vars list of maps in config.yaml.
Default: []
Values: A list of user to variable map
Example:
Let's again set the dolt_show_system_tables variable but this time only for user root. I modify my config.yaml as such.
The jwks section of config.yaml is used to configure JSON web token (JWT) authentication. This configuration section is used to authenticate users of the Hosted Workbench to running Hosted Dolt servers. If your interested in this authentication method for your own Dolt use case, please come to our Discord and let us know.
cluster
This section of config.yaml is used to configure "Direct to Standby" or cluster replication. Refer to the documentation for replication for this section of config.yaml. This configuration requires multiple Dolt instances configured so it is out of scope for this article.
System Variables
Dolt defines system variables that you can set in your session via the SET syntax. Many of these can be persisted, so they remain set after a server restart.