Erteilen von MySQL-server-administration-rechten (SUPER-RELOAD...) mit ansible?

Gibt es eine Möglichkeit, wie grant MySQL-Administrations-Privilegien mit Ansible mysql_user-Modul (oder eines anderen Moduls)? Ich möchte set SUPER, RELOAD und SHOW DATABASES Privilegien des Benutzers zusammen mit einigen anderen Datenbank-spezifische privs.

Folgenden basic setup funktioniert gut für mich:

- name: Set user privileges
  mysql_user:
    user={{ mysql_user }}
    password={{ mysql_password }}
    state=present
    priv={{ item }}
  with_items:
    - 'somedatabase.*:ALL'
    - 'someotherdatabase.*:ALL'

...Ergebnisse, in:

TASK: [db | Set user privileges]
**********************************************
ok: [dbuser] => (item=somedatabase.*:ALL)
ok: [dbuser] => (item=someotherdatabase.*:ALL)

Folgenden setup sagt immer "geändert" und die Privilegien sind nicht das, was man erwarten würde:

- name: Set user privileges
  mysql_user:
    user={{ mysql_user }}
    password={{ mysql_password }}
    state=present
    priv={{ item }}
  with_items:
    - '*.*:SUPER,RELOAD,SHOW\ DATABASES'
    - 'somedatabase.*:ALL'
    - 'someotherdatabase.*:ALL'

(wiederholte) Ausführung:

TASK: [db | Set user privileges]
**********************************************
changed: [dbuser] => (item=*.*:SUPER,RELOAD,SHOW\ DATABASES)
changed: [dbuser] => (item=somedatabase.*:ALL)
ok: [dbuser] => (item=someotherdatabase.*:ALL)

Ergebnisse in:

mysql> show grants for 'dbuser'@'localhost';
+---------------------------------------------------------------------------------------------------------------+
| Grants for dbuser@localhost                                                                                   |
+---------------------------------------------------------------------------------------------------------------+
| GRANT USAGE ON *.* TO 'dbuser'@'localhost' IDENTIFIED BY PASSWORD '*2046D2DDAE359F311435E8B4D3776EFE13FB584C' |
| GRANT ALL PRIVILEGES ON `somedatabase`.* TO 'dbuser'@'localhost'                                              |
| GRANT ALL PRIVILEGES ON `someotherdatabase`.* TO 'dbuser'@'localhost'                                         |
+---------------------------------------------------------------------------------------------------------------+
3 rows in set (0.00 sec)

Weiß jemand, wie:

  1. set SUPER, RELOAD und SHOW DATABASE admin. Privilegien?
  2. die Konfiguration idempotent?
Schreibe einen Kommentar