MySQL предоставляет привилегию для локального пользователя БД, чтобы разрешить удаленным хостам использовать ansible

#mysql #ansible

#mysql #ansible

Вопрос:

Я пытаюсь войти в MySQL DB как пользователь root и предоставить привилегии локальному пользователю. Пользователь root уже имеет привилегию доступа к удаленным хостам. Я хочу предоставить то же самое для локального пользователя. Я должен использовать ansible только для достижения этого. Я застрял в формате priv модуля ansible mysql_user . Согласно документации ansible в формате db.table:priv1 priv1 — это формат, основанный на GRANT заявлении MySQL.

Ниже приведено то, что я пытаюсь сделать, но для всех комбинаций priv я сталкиваюсь с ошибкой invalid privileges string: Invalid privileges specified . Есть идеи, для чего может быть подходящей необработанная строка priv ?

 ---
- hosts: localhost
  gather_facts: yes
  tasks:
    - name: Grant privilege to local user
      mysql_user:
        name: mylocaluser
        login_host: 10.10.10.11
        login_user: root
        login_password: 'myRootPassword'
        append_privs: true
        priv: "mydb.*:'mylocaluser'@'10.10.10.12'"
        state: present
 

Где 10.10.10.11 находится хост БД и 10.10.10.12 пытается ли удаленный хост получить доступ к БД с помощью mylocaluser

Ответ №1:

Вы уже указываете пользователя с name помощью . Вам не нужно указывать это снова в priv. Следующее создает пользователя со всеми привилегиями для всех баз данных.

Этот пользователь должен иметь возможность входить в эту систему из другой системы.

     - name: Grant privilege to local user
      mysql_user:
        name: mylocaluser
        login_host: 10.10.10.11
        login_user: root
        login_password: 'myRootPassword'
        append_privs: true
        priv: '*.*:ALL'
        state: present
 

Согласно документации, значения priv должны быть отмечены как: priv: 'DB.TABLES:PRIV1,PRIV2' .