我想在 VPC 内的多个 RDS 实例中创建一个只读用户。基本的做法是:
- mysql -h "rds_endpoint" -u "admin_user" -p
- GRANT SELECT on . to 'eng_ro'@'jump_box_ip' IDENTIFIED BY 'password';
- FLUSH PRIVILEGES;
我使用 Jumpbox(面向公众的 IP)登录 VPC。我写了一本剧本,如下所示:
---
- name: Connect to the mysql db as root
mysql_user:
login_user: root
login_password: temp+1234
host: {{ item }}
with_items:
- rds_endpoint1
- rds_endpoint2
- name: Create smeng_ro user for all databases
mysql_user:
login_user: root
login_password: temp+1234
host: {{ item }}
name: smeng_ro
password: engronly
priv: *.*,GRANT
state: present
with_items:
- rds_endpoint1
- rds_endpoint2
但是它没有做我想做的事,我错过了什么?
最佳答案
首先,您的第一个任务实际上并没有执行任何操作,因此您可以将其删除。
至于创建具有某些权限的用户,您基本上已经在第二个任务中涵盖了这一点,但是您授予的权限只是给出 GRANT
授予用户对所有数据库的权限。尽管仔细检查后,您在选择的数据库 (*.*
) 和授予的实际权限 (GRANT
) 之间使用了逗号而不是冒号。
如果您只想给出 SELECT
在所有数据库上,您可以将该行替换为 priv: *.*:SELECT
。 priv
属性的格式在 Ansible docs 中以 db.table:priv1,priv2
的形式给出。 .
所以你的任务应该是这样的:
- name: Create smeng_ro user for all databases
mysql_user:
login_user: root
login_password: temp+1234
host: {{ item }}
name: smeng_ro
password: engronly
priv: *.*:SELECT
state: present
with_items:
- rds_endpoint1
- rds_endpoint2
关于mysql - 如何使用 ansible 在 amazon mysql RDS 中创建只读用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34892274/