petoju / terraform-provider-mysql

Terraform MySQL provider – unofficial fork
https://registry.terraform.io/providers/petoju/mysql
Mozilla Public License 2.0
73 stars 48 forks source link

how to grant permissions for a existing digitalocean database user? #54

Closed loeffel-io closed 5 months ago

loeffel-io commented 1 year ago
resource "digitalocean_database_user" "digitalocean_database_user_ranked_campaign_optimizer_report_grpc_production" {
  cluster_id = digitalocean_database_cluster.digitalocean_database_cluster_ranked_1.id
  name       = "ranked-campaign-${substr("optimizer", 0, 1)}-${substr("report", 0, 1)}-${substr("grpc", 0, 1)}-${substr(var.env, 0, 1)}"
}

resource "mysql_grant" "mysql_grant_digitalocean_database_user_ranked_campaign_optimizer_report_grpc_production" {
  user       = digitalocean_database_user.digitalocean_database_user_ranked_campaign_optimizer_report_grpc_production.name
  database   = digitalocean_database_db.digitalocean_database_db_ranked_campaign_optimizer_report_grpc_production.name
  privileges = ["SELECT", "UPDATE", "INSERT", "CREATE VIEW", "SHOW VIEW", "EVENT"]
}

Fails with Error: Error running SQL (GRANT CREATE VIEW, UPDATE, SELECT, EVENT, SHOW VIEW, INSERT ONranked-campaign-o-r-g-p.* TO 'ranked-campaign-o-r-g-p'@'localhost'): Error 1410: You are not allowed to create a user with GRANT

I don't want to create a user

loeffel-io commented 1 year ago

fyi

if i set host to % it crashes

╷
│ Error: Provider produced inconsistent result after apply
│ 
│ When applying changes to mysql_grant.mysql_grant_digitalocean_database_user_ranked_campaign_optimizer_report_grpc_production, provider "provider[\"registry.terraform.io/petoju/mysql\"]" produced an unexpected new value: Root resource
│ was present, but now absent.
│ 
│ This is a bug in the provider, which should be reported in the provider's own issue tracker.
loeffel-io commented 1 year ago
Bildschirm­foto 2023-01-04 um 12 32 51
petoju commented 1 year ago

Based on your last message, your user uses host %. You should do that.

Maybe it won't work - but in that case, you need TRACE (or at least stdout) to find out, what has been executed. Something crashed, but that's not enough to know, what went wrong.