pydo.databases.add_user()

Generated on 16 Oct 2026 from pydo version v0.44.0

Usage

client.databases.add_user(
    database_cluster_uuid="9cc10173-e9ea-4176-9dbc-a4cee4c4ff30",
    body={
        "name": "app-01",
        "mysql_settings": {...},
        "settings": {...},
        ...,
    },
)
Returns JSON Raises HttpResponseError

Description

To add a new database user, send a POST request to /v2/databases/{database_cluster_uuid}/users with the desired username.

Note: User management is not supported for Caching or Valkey clusters.

When adding a user to a MySQL cluster, additional options can be configured in the mysql_settings object.

When adding a user to a PostgreSQL cluster, additional options can be configured in the settings object (for example, pg_allow_replication). When pg_allow_replication is omitted, it defaults to false.

When adding a user to a Kafka cluster, additional options can be configured in the settings object.

When adding a user to a MongoDB cluster, additional options can be configured in the settings.mongo_user_settings object.

The response will be a JSON object with a key called user. The value of this will be an object that contains the standard attributes associated with a database user including its randomly generated password.

Parameters

database_cluster_uuid string required

A unique identifier for a database cluster.

name string required

Example: app-01

The name of a database user.

role string optional read-only

A string representing the database user's role. The value will be either
"primary" or "normal".

One of: primary, normal

password string optional read-only

Example: example_password

A randomly generated password for the database user.
Requires database:view_credentials scope.

access_cert string optional read-only

Example: -----BEGIN CERTIFICATE----- MIIEexampleCertificateNotForProductionUseOnly -----END CERTIFICATE-----

Access certificate for TLS client authentication. (Kafka only)

access_key string optional read-only

Example: -----BEGIN PRIVATE KEY----- MIIEexamplePrivateKeyNotForProductionUseOnly -----END PRIVATE KEY-----

Access key for TLS client authentication. (Kafka only)

mysql_settings object optional
Show child properties
auth_plugin string required

A string specifying the authentication method to be used for connections
to the MySQL user account. The valid values are mysql_native_password
or caching_sha2_password. If excluded when creating a new user, the
default for the version of MySQL in use will be used. As of MySQL 8.0, the
default is caching_sha2_password.

One of: mysql_native_password, caching_sha2_password

settings object optional
Show child properties
pg_allow_replication boolean optional

Example: True

For PostgreSQL clusters, set to true to grant the user replication
privileges. When omitted on create or update, the value defaults to
false and replication privileges are not granted. This option is not
currently supported for other database engines.

opensearch_acl array of objects optional

ACLs (Access Control Lists) specifying permissions on index within a OpenSearch cluster.

Show child properties
index string optional

Example: index-abc.*

A regex for matching the indexes that this ACL should apply to.

permission string optional

Permission set applied to the ACL. 'read' allows user to read from the index. 'write' allows for user to write to the index. 'readwrite' allows for both 'read' and 'write' permission. 'deny'(default) restricts user from performing any operation over an index. 'admin' allows for 'readwrite' as well as any operations to administer the index.

One of: deny, admin, read, readwrite, write

acl array of objects optional

ACLs (Access Control Lists) specifying permissions on topics within a Kafka cluster.

Show child properties
id string optional

Example: aaa

An identifier for the ACL. Will be computed after the ACL is created/updated.

topic string required

Example: topic-abc.*

A regex for matching the topic(s) that this ACL should apply to.

permission string required

Permission set applied to the ACL. 'consume' allows for messages to be consumed from the topic. 'produce' allows for messages to be published to the topic. 'produceconsume' allows for both 'consume' and 'produce' permission. 'admin' allows for 'produceconsume' as well as any operations to administer the topic (delete, update).

One of: admin, consume, produce, produceconsume

mongo_user_settings object optional

MongoDB-specific settings for the user. Configure these when creating a user. Updating MongoDB roles or database access after creation is not supported; recreate the user to change them. This option is not currently supported for other database engines.

Show child properties
databases array of strings optional

Example: ['my-db', 'my-db-2']

A list of databases to which the user should have access. When the database is set to admin, the user will have access to all databases based on the user's role i.e. a user with the role readOnly assigned to the admin database will have read access to all databases.

role string optional

The role to assign to the user with each role mapping to a MongoDB built-in role. readOnly maps to a read role. readWrite maps to a readWrite role. dbAdmin maps to a dbAdmin role.

One of: readOnly, readWrite, dbAdmin

readonly boolean optional

Example: True

(To be deprecated: use settings.mongo_user_settings.role instead for access controls to MongoDB databases).
For MongoDB clusters, set to true to create a read-only user.
This option is not currently supported for other database engines.

Request Sample

Show Request Sample
import os
from pydo import Client

client = Client(token=os.environ.get("DIGITALOCEAN_TOKEN"))

add_user_resp = client.databases.add_user(database_cluster_uuid="ab7bb7a", body={"name": "app-01"})

Response Example

Show Response Example
{
  "user": {
    "name": "app-01",
    "role": "normal",
    "password": "example_password"
  }
}

More Information

See /v2/databases/{database_cluster_uuid}/users in the API reference for additional detail on responses, headers, parameters, and more.

We can't find any results for your search.

Try using different keywords or simplifying your search terms.