mysql - 如何使用 ansible 在 amazon mysql RDS 中创建只读用户

标签 mysql amazon-web-services amazon-rds ansible

我想在 VPC 内的多个 RDS 实例中创建一个只读用户。基本的做法是:

  1. mysql -h "rds_endpoint" -u "admin_user" -p
  2. GRANT SELECT on . to 'eng_ro'@'jump_box_ip' IDENTIFIED BY 'password';
  3. 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: *.*:SELECTpriv 属性的格式在 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/

相关文章:

jquery - 自动出价如何在拍卖网站中运作

mysql 返回所有在值中加入斜线的行

java - 如何使用 JPA 或 Hibernate @JoinTable 以及额外的连接条件,例如 SQL => from a join b on a.no = b.no 或 b.no is null

amazon-web-services - 用户数据在自定义 AMI(基于 Windows 2019 Base AMI 构建)中不起作用?

reactjs - Next.js 在本地目录中搜索不在 AWS 上的图像

java - JDBCConnectionException 有时会出现 spring 数据和 amazon RDS

mysql - SQL连接具有多对多关系的联结表

amazon-web-services - AWS Kinesis Firehose无法将数据索引到AWS Elasticsearch中

php - AWS RDS MYSQL 每秒写入操作计数

postgresql - 为什么 Aurora Postgres 12.4 不能将其实例类从 db.r5.xlarge 更改为 db.r6g.4xlarge?