diff --git a/infra/main/main.tf b/infra/main/main.tf index 6f8e3b5..294d049 100644 --- a/infra/main/main.tf +++ b/infra/main/main.tf @@ -99,6 +99,7 @@ module "digitalocean_mysql_database_cluster" { databases = [{ name = "crater", create_default_superuser = true, + mysql_native_auth = true }] vpc_id = digitalocean_vpc.main.id diff --git a/terraform_modules/digitalocean_database_cluster/main.tf b/terraform_modules/digitalocean_database_cluster/main.tf index 1146ab1..9ab8b47 100644 --- a/terraform_modules/digitalocean_database_cluster/main.tf +++ b/terraform_modules/digitalocean_database_cluster/main.tf @@ -15,6 +15,12 @@ resource "digitalocean_database_cluster" "main" { node_count = var.node_count version = var.db_version private_network_uuid = var.vpc_id + + lifecycle { + ignore_changes = [ + storage_size_mib, + ] + } } resource "digitalocean_database_db" "main" { @@ -32,12 +38,14 @@ locals { resource "digitalocean_database_user" "default_users" { for_each = { for db in [for db in var.databases: db if db.create_default_superuser]: - db.name => db.name + db.name => db } cluster_id = digitalocean_database_cluster.main.id name = each.key + mysql_auth_plugin = each.value.mysql_native_auth ? "mysql_native_password" : null + provisioner "local-exec" { command = var.dbcli_name == "psql" ? "GRANT ALL ON DATABASE ${each.key} TO ${each.key};" : "GRANT ALL PRIVILEGES ON ${each.key} TO '${each.key}'@'%';" interpreter = var.dbcli_name == "psql" ? [ diff --git a/terraform_modules/digitalocean_database_cluster/variables.tf b/terraform_modules/digitalocean_database_cluster/variables.tf index 3a43c6b..c5d95f1 100644 --- a/terraform_modules/digitalocean_database_cluster/variables.tf +++ b/terraform_modules/digitalocean_database_cluster/variables.tf @@ -22,6 +22,7 @@ variable "databases" { type = list(object({ name = string, create_default_superuser = optional(bool, false), + mysql_native_auth = optional(bool, false), })) }