【问题标题】:Ansible doesn't change privilage from USAGE to GRANT ALLAnsible 不会将特权从 USAGE 更改为 GRANT ALL
【发布时间】:2016-12-26 00:55:51
【问题描述】:

我使用以下 ansible 任务来授予所有数据库的所有权限。

- name: create new user {{ db_user }} with all privilege
  mysql_user: name="{{ db_user }}"
              password="{{ db_password }}"
              append_privs=yes
              priv=*.*:ALL,GRANT state=present

但是当我在 mysql(mariadb) 上运行 show grants for 'dbuser'@'XX.XX.XX.XX'; 时,它显示我正在关注。

GRANT USAGE ON *.* TO 'dbuser'@'XX.XX.XX.XX' IDENTIFIED BY PASSWORD '*A7AD1ECBCD787B8CABE6A58AEA652A8B3CF5035BA82'

如何使用 ansible 将此 USAGE 更改为 GRANT ALL?

【问题讨论】:

  • 大括号旁边的空格重要吗?也就是说,您使用的是' db_user ' 还是'db_user'
  • 无论如何我添加了空格是因为清晰,Jinja2 模板引擎无论有没有空格都可以正常工作。

标签: mysql ansible mariadb ansible-playbook


【解决方案1】:

默认情况下,mysql_user 使用localhost 主机部分创建用户。
所以你的任务用GRANT ALL创建了dbuser@localhost
如果需要其他主机,请为模块设置host=XX.XX.XX.XX参数。
从 2.1 开始,修改权限时也有 host_all=yes 可用。

【讨论】:

  • 感谢@Konstantin 这是问题所在。
【解决方案2】:
mysql_user:
    name: root
    host: "{{item}}"
    password: "{{ mysql_root_password }}"
    priv: "*.*:ALL,GRANT"
    host_all: yes
  with_items:
    - "{{ ansible_hostname }}"
    - 127.0.0.1
    - ::1
    - localhost
```

【讨论】:

    猜你喜欢
    • 2011-01-08
    • 2016-02-15
    • 1970-01-01
    • 2011-08-04
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 2015-09-12
    • 2013-06-24
    相关资源
    最近更新 更多