Terrafrom & MySQL: доступ запрещен - PullRequest
1 голос
/ 09 марта 2020

У меня есть следующий код:

provider "mysql" {
  alias = "rails_production"
  endpoint = var.mysql_rails_production_host
  username = var.mysql_rails_production_user
  password = var.mysql_rails_production_password
}

resource "mysql_user" "michael_b" {
  provider = mysql.rails_production
  user = "michael.b"
  host = "%"
}

resource "mysql_user_password" "michael_b" {
  provider = mysql.rails_production
  user = mysql_user.michael_b.user
  host = mysql_user.michael_b.host
  pgp_key = "keybase:USER"
}

resource "mysql_grant" "michael_b" {
  provider = mysql.rails_production
  user = mysql_user.michael_b.user
  host = mysql_user.michael_b.host
  database = "production"
  privileges = ["SELECT"]
}

И следующая ошибка:

1044: Access denied for user 'terraform'@'%' to database 'mysql'

on rails_production.tf line 7, in resource "mysql_user_password" "michael_b":
   7: resource "mysql_user_password" "michael_b"

Я не совсем понимаю. Я почти уверен, что пользователь terraform имеет доступ к таблице mysql; Я вошел в базу данных с пользователем и запустил несколько запросов, все выглядит хорошо. Я даже могу получить доступ к таблице mysql.

И если я выполню команду:

SHOW GRANTS FOR 'terraform'@'%'

, я получу:

GRANT SELECT, SHOW DATABASES, CREATE USER ON *.* TO 'terraform'@'%' WITH GRANT OPTION

Есть идеи?

1 Ответ

0 голосов
/ 02 апреля 2020

Проблема заключается в привилегиях пользователей mysql terraform. Привилегия UPDATE отсутствует.

Обновите привилегии пользователя terraform в базе данных mysql, чтобы при запуске

SHOW GRANTS FOR 'terraform'@'%'

вы получали

GRANT SELECT, UPDATE, SHOW DATABASES, CREATE USER ON *.* TO 'terraform'@'%' WITH GRANT OPTION

вместо

GRANT SELECT, SHOW DATABASES, CREATE USER ON *.* TO 'terraform'@'%' WITH GRANT OPTION

...