This tutorial explains setting up HashiCorp Vault’s Database Secrets Engine for generating dynamic MySQL credentials on AWS RDS.
In this tutorial, you’ll learn how to set up HashiCorp Vault’s Database Secrets Engine to generate dynamic MySQL credentials for an AWS RDS instance. Dynamic secrets improve security by issuing short-lived, on-demand database users.
Define a Vault role called advanced. This role tells Vault how to provision database users:
Copy
Ask AI
vault write mysql/roles/advanced \ db_name="mysql-database" \ creation_statements=" CREATE USER '{{name}}'@'%' IDENTIFIED BY '{{password}}'; GRANT SELECT ON *.* TO '{{name}}'@'%'; " \ default_ttl="1h" \ max_ttl="24h"
Parameter
Description
db_name
Must match the connection name (mysql-database)
creation_statements
SQL commands Vault runs to provision a dynamic user
default_ttl / max_ttl
Lease durations for the generated credentials
Adjust the SQL in creation_statements to grant required permissions (e.g., INSERT, UPDATE, etc.).
Inspect the role:
Copy
Ask AI
vault read mysql/roles/advanced
Expected output:
Copy
Ask AI
Key Value--- -----creation_statements [CREATE USER '{{name}}'@'%' IDENTIFIED BY '{{password}}';GRANT SELECT ON *.* TO '{{name}}'@'%';]db_name mysql-databasedefault_ttl 1hmax_ttl 24hrenew_statements []revoke_statements []rollback_statements []