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:
- set
SUPER
,RELOAD
undSHOW DATABASE
admin. Privilegien? - die Konfiguration idempotent?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand eine elegante Lösung, nachdem alle! Zuerst alle Privilegien definiert werden sollte, irgendwo eine Liste:
dann die
mysql_user
plugin muss nicht Anhängen die Privilegien, verwenden Sie einfach die Privilegien string erwähnt in der Dokumentation im folgenden format:mydb.*:INSERT,UPDATE/anotherdb.*:SELECT/yetanotherdb.*:ALL
.Der einzige trick ist, wie zu konvertieren Liste, um die Zeichenfolge:
Wiederholbar ausführen der Aufgabe nicht sagen geändert mehr:
Fand heraus, dass beim einschalten die Reihenfolge der Privilegien, die ich in der Lage bin zu gewähren genannten admin. Privilegien:
Berechtigungen gesetzt sind als erwartet:
obwohl die Aufgabe noch nicht idempotent. Jeder Lauf gibt mir:
append_privs
Gibt es keine Notwendigkeit für tricks mit Listen, können Sie mehrere Berechtigungen, die durch einen Schrägstrich getrennt:
oder kürzer: