Radius.Data/mySqlDatabases@2025-08-01-preview

Description

The Radius.Data/mySqlDatabases Resource Type deploys a MySQL database. Provide the administrator username and password directly on the resource. The password property is marked x-radius-sensitive, so Radius encrypts it at rest, redacts it on reads, and exposes it (decrypted) only to the platform-engineer recipe that provisions the database.

resource mysql 'Radius.Data/mySqlDatabases@2025-08-01-preview' = {
  name: 'mysql'
  properties: {
    environment: environment
    application: myApplication.id
    version: '8.0'
    database: 'appdb'
    username: 'myadmin'
    // From a @secure() password parameter passed in via the CLI
    password: password
  }
}

When deploying the application definition, provide the database password value as a parameter. It is recommended to use a password generator such as openssl or equivalent. For example, rad deploy app.bicep -p ****** rand -hex 16).

To connect your container to the database, create a connection from the Container resource to the database as shown below.

resource myApplication 'Radius.Core/Applications@2025-08-01-preview' = { ... }

resource frontend 'Radius.Compute/containers@2025-08-01-preview' = {
  name: 'frontend'
  properties: {
    application: myApplication.id
    environment: environment
    container: {
      image: 'frontend:1.25'
      ports: {
        web: {
          containerPort: 8080
        }
      }
    }
    connections: {
      mysqldb: {
        source: database.id
      }
    }
  }
}

The connection automatically injects environment variables into the container for all properties from the database. The environment variables are named CONNECTION_<CONNECTION-NAME>_<PROPERTY-NAME>. In this example, the connection name is mysqldb so the environment variables will be:

  • CONNECTION_MYSQLDB_DATABASE
  • CONNECTION_MYSQLDB_HOST
  • CONNECTION_MYSQLDB_PORT

Top-Level Properties

PropertyTypeDescription
applicationstring(Optional) The Radius Application ID. myApplication.id for example.
codeReferencestringOptional URI to the source code of this resource type. ex: https://github.com/radius-project/radius/blob/4fab87e8127adf1db6f43b7029d5235fbe82c5c9/cmd/controller/main.go#L27
connectionsobjectMap of connection name to connection data.
databasestring(Optional) The name of the database. Defaults to mysql_db if not provided.
environmentstring(Required) The Radius Environment ID. Typically set by the rad CLI. Typically value should be environment.
hoststringThe host name used to connect to the database. Mapped from the recipe module’s output.
passwordstring(Required) The administrator password for the MySQL database. Marked x-radius-sensitive: Radius encrypts it at rest, redacts it on reads, and exposes it decrypted only to the recipe as {{context.resource.properties.password}}.
portintegerThe port number used to connect to the database. Mapped from the recipe module’s output (MySQL flexible server uses 3306).
usernamestring(Required) The administrator username for the MySQL database. Provided directly on the resource and passed to the recipe as {{context.resource.properties.username}}.
versionstring(Optional) The major MySQL server version in the X.Y format. Defaults to 8.4 if not provided.
Allowed values: 5.7, 8.0, 8.4.

Object Properties

connections

PropertyTypeDescription
disableDefaultEnvVarsbooleanDisables the automatic injection of environment variables from the connected resource’s properties.
sourcestringResource ID of the source resource for this connection.