Ansible has official support to managing users and grants through a community maintained module. Click here for documentation. There's more modules to manage different aspects of Mysql, you can definitely do a lot more as code using Ansible. Make sure to read the documentation to know all the features, know every input option and all the use cases supported.
- name: Create user with differente permissions to different databases
mysql_user:
login_user: mysql_admin
login_password: mysql_admin_password
name: demo
state: present
priv: "mydb.*:INSERT,UPDATE/anotherdb.*:SELECT/yetanotherdb.*:ALL"
- name: Create read only users for analytics db
mysql_user:
login_user: mysql_admin
login_password: mysql_admin_password
name: "{{ item }}"
state: present
priv: "analytics.*:SELECT"
with_items:
- user1
- user2
- user3
Why Ansible for managing Mysql users/grants
Ansible is a configuration management tool that provides you the ability to manage your infrastructure as code. It's one of the most popular options and it differs from the more popular Chef and Puppet by managing nodes on push mode instead of having agents pulling changes from the central repository. It's biggest strengths are simple configuration based on YAML, pushing changes on demand via SSH connection, no agents required on the target hosts, only python and an SSH server. Being open source you can find Playbooks and roles for all your needs, most of them will be plug and play, with no changes required from you besides adding the roles to your playbooks.