Wie gewähre ich MySQL Server-Administrationsberechtigungen (SUPER, RELOAD ...) mit ansible?

8

Gibt es eine Möglichkeit, MySQL-Administrationsberechtigungen mit dem Modul Ansible mysql_user zu erteilen (oder mit einem anderen Modul)? Ich möchte die Berechtigungen SUPER , RELOAD und SHOW DATABASES für den Benutzer zusammen mit einigen anderen datenbankspezifischen Zugriffsrechten festlegen.

Das folgende basic Setup funktioniert gut für mich:

%Vor%

... ergibt:

%Vor%

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

%Vor%

(wiederholt) run:

%Vor%

ergibt:

%Vor%

Kann jemand:

  1. set SUPER , RELOAD und SHOW DATABASE admin. Privilegien?
  2. mache die Konfiguration idempotent?
Ikar Pohorský 09.04.2014, 09:35
quelle

3 Antworten

12

Haben Sie doch die elegante Lösung gefunden! Zunächst sollten die Privilegien irgendwo als Liste definiert werden:

%Vor%

Dann muss das mysql_user -Plugin die Berechtigungen nicht anhängen , sondern einfach die in der Dokumentation im folgenden Format: mydb.*:INSERT,UPDATE/anotherdb.*:SELECT/yetanotherdb.*:ALL .

Der einzige Trick ist, wie man eine Liste in die Zeichenfolge konvertiert:

%Vor%

Der wiederholbare Lauf der Aufgabe sagt nicht mehr geändert :

%Vor%     
Ikar Pohorský 14.04.2014, 08:05
quelle
7

Haben Sie herausgefunden, dass die Reihenfolge der Privilegien, die ich den genannten Admin gewähren kann, vergeben wird. Privilegien:

%Vor%

Berechtigungen sind wie erwartet festgelegt:

%Vor%

obwohl die Aufgabe immer noch nicht idempotent ist. Jeder Lauf gibt mir:

%Vor%     
Ikar Pohorský 09.04.2014 10:27
quelle
1

Es gibt keine Notwendigkeit für Tricks mit Listen, Sie können mehrere durch einen Schrägstrich getrennte Privilegien setzen:

%Vor%

oder kürzer:

%Vor%     
Zoltán 15.11.2016 14:49
quelle

Tags und Links